
5 minute read
2.3.4 Datastructuurdiagram/ERD
Opdracht/Oefening: bepaal alle foreign keys van de tabellen PERSONEEL en STUDIEGEBIED. Hou ook rekening met recursieve relaties.
De tabellen en de relaties tussen de verschillende tabellen worden visueel weergegeven in een datastructuurdiagram of ERD (entiteit-relatiediagram). Een ERD toont de entiteiten of objecten en hun relaties. Een voorbeeld van een entiteit is de entiteit KLANT. KLANT heeft dan een relatie met een andere entiteit, een BESTELLING. Een klant heeft nul, een of meer bestellingen en een bestelling werd geplaatst door één klant. Op technisch databaseniveau spreken we dan over verbanden tussen tabellen via de foreign key. Er zijn diverse mogelijke voorstellingswijzen van een ERD. Een bekende notatieswijze is de Chennotaties. Wij gebruiken echter de kraaiepootnotaties of Crow’s foot notation. Deze naam heeft te maken met de notatieswijze van relaties zoals hieronder zal blijken. We kunnen een ERD ontwerpen op diverse niveaus: Op het conceptuele niveau ontwerpen we de gegevensstructuur nog op een vrij abstract niveau waarbij we de informatiebehoeften van onze klant en de relaties tussen entiteiten in klaart brengen zonder rekening te houden met de beperkingen van een relationele database. Op dat niveau zullen we bijvoorbeeld veel-op-veel-relaties toelaten en zullen we de foreign keys en primary keys nog niet definiëren. Op het logische niveau zullen we wel elke entiteit/tabel en elke relatie in kaart brengen en de attributen duidelijk definiëren met hun respectievelijke logische datatypes (tekst, geheel getal, kommagetal, booleaanse waarde, media-object) zonder er specifiek rekening mee te houden in welke technologie we onze relationele database zullen definiëren. We zullen dus wel de primaire sleutels, alternatieve sleutels, verwijssleutels aanduiden, maar we zullen er ons nog niet om bekommeren of het systeem een kommagetal definieert als numeric, float of een ander datatype specifiek voor deze technologie. Op het fysieke niveau houden we rekening met de RDBMS die we zullen hanteren. Het model bevat alle details opdat de database automatisch gegenereerd kan worden. Wij zullen in deze cursus op ERD’s op het logische niveau tekenen. De relatie tussen twee entiteiten wordt soms aangeduid met de term ‘ouder/kind-associatie’. De tabel met de verwijssleutel heet dan de kindtabel, de tabel waarnaar verwezen wordt heet de oudertabel.
Datastructuurdiagram van de Vives-databank:
h e eft als c h e f
P e rso n e e l is v e r b o n d en a an h e eft als h o o f d St u d ieg eb ie d
PERSONEEL(Persnr, Naam,Voornaam, Gebdat, Gesl, Salaris, Manager(FK), Studgebnr(FK)) STUDIEGEBIED(Studgebnr, Studgebnaam, Studgebmanager(FK), Managerstartdate) Het datastructuurdiagram geeft, samen met een opsomming van de attributen per tabel, een duidelijk beeld van de structuur van een database. De naam van de relatie tussen tabellen komt tot stand door, vanuit het standpunt van de tabel met de foreign key, de betekenis te verwoorden van de foreign key. De tabel die de foreign key bevat, vormt dus het onderwerp van de te maken zinsconstructie. een Personeelslid ‘is verbonden aan’ een Studiegebied (FK: Studgebnr) een Studiegebied ‘heeft als hoofd’ een Personeelslid (FK: Studgebmanager) een Personeelslid ‘heeft als chef’ een (ander) Personeelslid (FK: Manager)
Als alternatief van het datastructuurdiagram en de opsomming van de attributen per tabel kunnen de attributen ook opgenomen worden in het datastructuurdiagram.
Voor wat de relatie ‘verbonden aan’ betreft, vormt Studiegebied de oudertabel en Personeel de kindtabel (bevat de foreign key). Er wordt expliciet aangegeven dat er: bij één rij van Studiegebied, nul of meer Personeelrijen horen. bij één rij van Personeel, precies één Studiegebiedrij hoort.
Deze zogenaamde cardinaliteiten moet men in het schema steeds aflezen ‘aan de andere kant’ van de verbindingslijn, lezend van de ene tabel naar de andere.
h e ef t al s c h e f P E RS O NE E L N aam V oo rn aam P er sn r Ge sl S al a ri s M a nag er ( FK ) S t udg eb nr FK) S TU DI E GE B I E D S t udg eb nr S t udg eb na am S t udg eb m an age r ( FK ) M a nag er st ar da te
h e eft als h o o f d
is v e r b o n d en a an
is v e r b o n d en a an P e rso n e e l St u d ieg eb ie d
Bij éé n Stu d ie ge b ie d -r ij h o r en n u l o f me er P e rs o n ee lr ije n. Bij éé n P er so n e el - r ij ho o r t p r ec ie s éé n St u d ieg eb ie d -r ij.
Dit betekent dat een personeelslid steeds moet verbonden zijn aan een studiegebied, m.a.w. de foreign key Studgebnr in Personeel moet verplicht ingevuld worden!
De realisatie hiervan gebeurt met een extra beperkende voorwaarde op de foreign key (not null constraint, zie later).
Bij de relatie ‘heeft als hoofd’ vormt Personeel de oudertabel en Studiegebied de kindtabel (bevat de foreign key). Bij één rij van Personeel horen nul of meer Studiegebied-rijen Bij één rij van Studiegebied hoort nul of één Personeel-rij
P e rso n e e l St u d ieg eb ie d h e ef t al s h o o f d
Dit betekent dat een studiegebied kan toegevoegd worden zonder aanduiding van de studiegebiedmanager, m.a.w. de foreign key Studgebmanager mag null zijn. Gezien, volgens de relationele theorie, een foreign key steeds (volledig) null mag zijn (zie paragraaf 2.3.3) impliceert dit geen extra voorwaarde op deze foreign key. Men spreekt in dit verband ook van een optionele (niet-verplichte) relatie. De relatie ‘heeft als chef’ is in die zin speciaal dat de verwijzing naar de tabel zelf gebeurt, men noemt dit een recursieve relatie.
Bij één rij van Personeel hoort geen of 1 rij van Personeel die de chef aanduidt Bij één rij van Personeel horen 0 of meer rijen van Personeel die de ondergeschikten aanduiden.
Samenvattend worden volgende cardinaliteitsnotaties in een datastructuurdiagram gebruikt: