18.09.2013 Views

E/R-diagram

E/R-diagram

E/R-diagram

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!