E/R-diagram
E/R-diagram
E/R-diagram
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Webprogrammering –Netteknologi A.<br />
Note vedr. E/R <strong>diagram</strong>mer til Databaser<br />
Datamodeller<br />
DTU 9. oktober 2007<br />
I forlængelse af noten om normalisering, følges der her op med redskabet<br />
E/R-<strong>diagram</strong>mer til opstilling af en datamodel, opfat således dette som en alternativ<br />
metode mere end endnu et redskab til datamodellering.<br />
1. Elementerne<br />
Vi betragter E/R-<strong>diagram</strong>met, som et <strong>diagram</strong> over entiteter og relationer<br />
Tegneregler:<br />
Entitet<br />
En rektangulær kasse – symboliserer en entitet<br />
(entiteter bliver til tabeller)<br />
Relation<br />
En diamant (eller en rude) symboliserer en relation mellem to eller flere entiteter.<br />
(kan nogle gange blive til en tabel)<br />
Et E/R-<strong>diagram</strong> er en logisk eller begrebsmæssig tegning af lagrede data. Dette kaldes<br />
også en datamodel. Senere kan datamodellen gøres ”fysisk” eller implementeres i<br />
form af en database, efter nogle retningslinjer, som beskrives herunder i<br />
Ordredatamodellen:<br />
KUNDE<br />
N<br />
1<br />
Har<br />
afgivet<br />
ORDRE<br />
N<br />
Side: 1 af 7<br />
omfatter<br />
M<br />
VARE
Webprogrammering –Netteknologi A.<br />
Note vedr. E/R <strong>diagram</strong>mer til Databaser<br />
DTU 9. oktober 2007<br />
Fordelen ved at starte med en model eller en arkitekttegning er velkendte fra andre<br />
sammenhænge:<br />
Det er en nem og billig måde at udføre eksperimenter med løsningsalternativer<br />
Det giver overblik og mulighed for at tale sammen om det endelige produkt på<br />
en konstruktiv måde<br />
Det bidrager med en ”arbejdstegning” , der kan bruges ved fremstilling af det<br />
endelige produkt – dét, der også kaldes at implementere.<br />
Det gør at man efter implementeringen har en udmærket dokumentation til<br />
produktet.<br />
2. Relationer<br />
En relation er en forbindelse eller en sammenhæng mellem entiteter. I<br />
ordredatamodellen ovenfor er der to relationer ”Kunde har afgivet ordre” og ”Ordre<br />
omfatter vare”. Relationerne kan også læses den anden vej, så skulle de have heddet<br />
”ordre er afgivet af kunde” og ”Vare er omfattet af ordre”.<br />
Relationstyper<br />
Relationstypen angiver hvor mange entiteter relationen forbinder; man skelner<br />
mellem rekursive (1 entitet), binære (2 entiteter) og tertiære (3 entiteter) relationer.<br />
Rekursive relationer forbinder således en entitet med sig selv:<br />
Hund er<br />
hvalp af<br />
Binære relationer forbinder to entiteter. Det er klart den mest almindelige<br />
relationstype:<br />
Mand<br />
Tertiære relationer forbinder 3 entiteter:<br />
medikament<br />
m1<br />
er gift<br />
med<br />
Side: 2 af 7<br />
land<br />
m har licens<br />
til at sælge<br />
m1 i land<br />
Kvinde<br />
medicinalfirma<br />
m
Webprogrammering –Netteknologi A.<br />
Note vedr. E/R <strong>diagram</strong>mer til Databaser<br />
Relationsgrader<br />
DTU 9. oktober 2007<br />
Relationsgraden (også kaldet kardinaliteten) er en beskrivelse af antalsforholdet<br />
mellem entitetsforekomsterne ved en relation:<br />
11 1<br />
hundefører<br />
Relationsgraden 1:1<br />
fører en<br />
1<br />
hund<br />
Relationsgraden er 1:1 (læses: ”en til en”). Én hundefører fører højest 1 hund. Og én<br />
hund føres højest af én hundefører. Læg mærke til at kardinaliteten først er tolket fuldt<br />
ud når man har prøvet fra begge sider (eksemplet dækker bedst på 1 blind med 1 førerhund eller<br />
en tolder med en narkohund – glem alt om slædehunde på/i Grønland) .<br />
hund<br />
N<br />
Relationsgraden 1:N<br />
kommer<br />
fra<br />
1<br />
kennel<br />
Her ved relationsgraden 1:N (læses: ”én til N” eller ”1 til mange”) er det lettere at se<br />
noget om læseretningen. Man hiver først fat i én hund for at finde ud af hvor mange<br />
kennelerm den kan stamme fra – så skriver man 1 ovre ved kennel. Så tager man fat i<br />
kennel og finder ud af hvor mange hunde, der kan stamme fra den - så skriver man<br />
N for mange ovre ved hund – det var jo et antal hunde, man havde fundet frem til.<br />
hund<br />
Relationsgraden N:M<br />
N har<br />
behandlet<br />
M<br />
dyrlæge<br />
Dette <strong>diagram</strong> skal mht. til relationsgraden tolkes således: Relationsgraden er N:M<br />
(læses ”N til M” eller ”mange til mange”). En hund kan have været til konsultation<br />
hos mange forskellige dyrlæger og en dyrlæge kan have haft mange forskellige hunde<br />
i behandling. Grunden til, at man ikke bruger N begge steder, er for at tydeliggøre at<br />
der ikke nødvendigvis er tale om det samme antal hunde og dyrlæger i relationen.<br />
Side: 3 af 7
Webprogrammering –Netteknologi A.<br />
Note vedr. E/R <strong>diagram</strong>mer til Databaser<br />
Medlemstyper<br />
DTU 9. oktober 2007<br />
Medlemstypen angiver, om entitetsforekomsterne i en entitet skal deltage i en bestemt<br />
relation. Er medlemstypen obligatorisk, skal alle entitetsforekomster deltage i<br />
relationen. Er medlemstypen frivillig, kan der godt findes en entitetsforekomst der<br />
ikke deltager i relationen.<br />
dyrlæge<br />
N<br />
har<br />
behandlet<br />
M<br />
Obligatorisk<br />
Medlem<br />
Fed streg<br />
hund<br />
Vi kan godt forestille os en hund, der aldrig har været til dyrlæge. Men det er svært at<br />
være dyrlæge uden at have behandlet flere hunde………<br />
kunde<br />
har<br />
afgivet<br />
ordre<br />
En ordre kan ikke eksistere uden en kunde, (hvordan skal ordren ellers kunne<br />
ekspederes) - men en kunde kan godt oprettes uden afgivelse af en ordre.<br />
Eksempel: Vi reflekterer på en henvendelse – hvorefter vi fremsender reklamer –<br />
tilbud – kataloger. Dette sker inden ordren afgives og måske fører det aldrig til en<br />
ordre – men vi opretter den potentielle kunde i vores database.<br />
Hvorfor skal relationstyper, relationsgrader og medlemstyper bestemmes?<br />
Det kan virke besværligt – så der skulle gerne være en god grund til, at vi gør det.<br />
For det første får man beskrevet integritetsreglerne for området meget præcist. Det er<br />
eksempelvis rart at vide, om kunder først oprettes, når de har afgivet en ordre, eller<br />
allerede på dét tidspunkt, hvor de rekvirerer et katalog. Sådan noget vil blive afklaret<br />
ved fastsættelsen af medlemstyper.<br />
For det andet skal man på et tidspunkt tage stilling til om nogle af entiteterne og<br />
relationstyperne kan reduceres. At en entitet eller en relation reduceres vil sige at den<br />
ikke bliver til en tabel i den endelige database – attributterne flyttes i stedet ud i en af<br />
Side: 4 af 7
Webprogrammering –Netteknologi A.<br />
Note vedr. E/R <strong>diagram</strong>mer til Databaser<br />
DTU 9. oktober 2007<br />
de andre tabeller. Ganske bestemte regler skal være overholdt for at man kan tillade<br />
sig at reducere:<br />
En relation kan reduceres, hvis relationstypen er rekursiv eller binær, medlemstypen<br />
er obligatorisk i mindst en af siderne, og der på den anden side står ”1” i<br />
relationsgraden (kardinaliteten).<br />
En entitet kan reduceres, hvis relationstypen er rekursiv eller binær, relationsgraden<br />
er 1:1 og medlemstypen på begge sider er obligatorisk.<br />
Hvis de nævnte regler ikke overholdes vil der opstå redundans (data, der forekommer<br />
overflødigt mange gange) eller andre dårligdomme (anomalier).<br />
3. Attributter.<br />
Attributterne er de egenskaber ved entiteterne og relationerne, der skal gemmes dat<br />
om i tabellerne. Attributterne er med andre ord tabellernes kolonneoverskrifter. De<br />
skal bruges til at identificere og beskrive og listes i tabellerne.<br />
Tabelskitsernes form ses af figuren: Først entitetens eller relationens navn og så i<br />
parentes bagefter en liste med alle attributterne adskilt med komma.<br />
KUNDE<br />
1<br />
Har<br />
afgivet<br />
N<br />
ORDRE<br />
Ordredatamodellen:<br />
KUNDE (kundenr, fornavn, efternavn, tlfnr, …)<br />
ORDRE (ordrenr, kundenr, ordredato,….)<br />
VARE (varenr, varenavn, enhedspris, ….)<br />
ORDRE_OMFATTER_VARE (ordrenr, varenr, antal)<br />
N<br />
Side: 5 af 7<br />
omfatter<br />
M<br />
VARE
Webprogrammering –Netteknologi A.<br />
Note vedr. E/R <strong>diagram</strong>mer til Databaser<br />
DTU 9. oktober 2007<br />
Attributterne bruges som sagt bl.a. til at identificere de enkelte rækker/forekomster i<br />
tabellen. I dén forbindelse taler man om ”nøgleattributter” eller blot ”nøgler”. Man<br />
taler om flere forskellige slags nøgler:<br />
En kandidatnøgle er en eller flere attributter, som entydigt kan udpege<br />
rækkeforekomster i deres tabel. Der må ikke være flere attributter med end<br />
nødvendigt (Eksempel: kundenr, fornavn+efternavn og tlfnr i KUNDE).<br />
En primærnøgle er den kandidatnøgle, der er blevet valgt som den vigtigste<br />
identifikation af tabellens rækker. Den markeres med en understregning i<br />
tabelskitsen (eksempel: kundenr. i KUNDE).<br />
Set lidt i bakspejlet er kandidatnøglerne altså attributter eller attributkombinationer,<br />
som kan bruges som primærnøgle – deraf navnet.<br />
En alternativ nøgle er en kandidatnøgle der ikke er blevet valgt som<br />
primærnøgle (eksempel: fornavn + efternavn og tlfnr i KUNDE).<br />
En sammensat nøgle er en nøgle, der er sat sammen af flere attributter<br />
(eksempel: fornavn + efternavn i KUNDE).<br />
En fremmednøgle er en eller flere attributter, der indeholder en værdi, der står<br />
som primærnøgle i en anden tabel eller i en anden række i samme tabel.<br />
Fremmednøgler markeres med kursiv i tabelskitserne (evt. ved stiplet<br />
understregning i håndskrevne tabelskitser). Eksempel: kundenr i ORDRE,<br />
ordrenr og varenr i VARE.<br />
<br />
Kandidatnøgler<br />
Primærnøgle<br />
Alternative nøgler<br />
x x x x<br />
x x<br />
Læg mærke til at relationerne ofte implementeres med en sammensat primærnøgle,<br />
der består af fremmednøgler, som peger på de entiteter, der indgår i relationen.<br />
Attributter kaldes i daglig tale også for felter. (I Java bliver attributter implementeret<br />
som variable ).<br />
Side: 6 af 7
Webprogrammering –Netteknologi A.<br />
Note vedr. E/R <strong>diagram</strong>mer til Databaser<br />
Find entiteter, relationer og attributter<br />
DTU 9. oktober 2007<br />
I visse tilfælde kan det være vanskeligt at vide om man står med en entitet, en relation<br />
eller en attribut. Så kan man gribe til følgende beskrivelser af de sproglige<br />
sammenhænge:<br />
Entiteter:<br />
Navneord, der beskriver noget, der kan identificeres, som der er behov for at<br />
gemme information om, som overholder et fast regelsæt, og som har et fast<br />
sæt af egenskaber.<br />
Relationer:<br />
Udsagnsord i sætninger, hvor navnet på to eller flere entiteter indgår<br />
(Studerende låner bøger).<br />
Attributter:<br />
Navneord, der kan udtrykke en egenskab ved en entitet – herunder:<br />
-navneord, som kan antage en værdi (vægt, pris, antal …)<br />
-sammensatte navneord, hvor første led er en entitet ( Varepris o.l.)<br />
-sammensatte navneord, hvor sidste led er ”id”, nr”, ”kode” el.lign.<br />
-ofte kandidatnøgler<br />
RESUMÉ<br />
Vi skal opfatte E/R-<strong>diagram</strong>merne som en alternativ datamodelleringsmetode eller<br />
værktøj. Det meget anvendeligt til kommunikation med kunden, som vi vil lave<br />
databasen til. Det kræver at vi sætter kunden/brugen ind i tegnereglerne.<br />
Vi kan så afstemme virksomhedens måde at opfatte virkeligheden på med vores<br />
model.<br />
Når vi har det færdige E/R-<strong>diagram</strong> (godkendt af kunden) – går vi i gang med<br />
implementeringen kombineret med de reduceringer, der er beskrevet på side 4 og 5.<br />
(konkret ser vi i ordredatamodellen, hvordan relationen afgivet bliver reduceret bort<br />
ved, at primærnøglen på 1’er-siden bliver fremmednøgle på n-siden, sagt på en<br />
anden måde kundenr bliver fremmednøgle i ORDRE – dette opretholder relationen<br />
mellem de 2 entiteter KUNDE og ORDRE.<br />
(Dette kunne kun lade sig gøre fordi ???? obligatorisk medlemskab af ORDRE til …)<br />
Når vi implementerer og reducerer efter de givne regler, får vi som hovedregel<br />
”foræret” en database på 3 normalform. Dette kan man dog ikke være helt sikker på.<br />
Derfor er det en god idé, at løbe normaliserings betingelserne igennem på den model<br />
man ender op med.<br />
Side: 7 af 7<br />
DTU – 9/10 2007<br />
Finn Gustafsson