Entity-relationshipmodel
|
Een entiteit Persoon met de attributen Sofinummer, Voornaam en Achternaam. Het attribuut Sofinummer is primaire sleutel.
|
Het entity-relationship-model of entity-relationship diagram (ERD) is een datamodel of diagram voor het grafisch representeren van een conceptueel datamodel. Het is een visuele weergave van de entiteiten, relaties en beperkingen die gelden of aanwezig zijn in een bepaald ontwerp. Deze diagrammen worden gemaakt bij het ontwerpen van een informatiesysteem om inzicht te krijgen in de benodigde informatie en de verbanden tussen de gegevens.
Zo wordt het vaak gebruikt om een visuele weergave te maken van een relationeel model. Het gemaakte diagram kan vervolgens omgezet worden in een database. Het entity-relationship-model kan dus ook worden gezien als een methodologie voor het ontwerpen van een datamodel en database.
Inhoud |
[bewerken] Entity-relationship diagrammen
- Zie ook de afbeeldingen onderaan voor de weergave van de gebruikte voorbeelden in een ER-diagram.
[bewerken] Concepten
Een ER-diagram bestaat uit de volgende onderdelen:
- entiteiten: een entiteit kan worden gezien als een object, een concreet of abstract "iets" dat deel uitmaakt van het datamodel. Voorbeelden hiervan zijn: een auto, een werknemer, een lied of een gebied. Een entiteit heeft een eenduidige naam en een kernachtige omschrijving. Als het niet lukt een goede naam of omschrijving te vinden, kan dat een aanduiding zijn dat er een modelleringsfout is gemaakt. Bijvoorbeeld de naam 'auto of fiets' kan er op wijzen dan men eigenlijk bedoelt 'vervoermiddel' of dat men twee entiteiten moet maken, genaamd 'auto' en 'fiets'.
- relaties: een relatie geeft het verband weer tussen twee of meer entiteiten, zoals "een werknemer werkt in een fabriek"; werkt in is hier de relatie tussen de entiteiten werknemer en fabriek. Relaties kennen een kardinaliteit (de relatie kent 0,1 of n voorkomens), een optionaliteit (de relatie is verplicht of optioneel) en een exclusiviteit (een eenmaal toegewezen relatie mag wel of niet veranderd worden).
- attributen: een attribuut is een eigenschap van een entiteit of relatie. Zo heeft een werknemer (onder andere) een voornaam, een achternaam, een woonplaats en een sofinummer. Attributen kennen een datatype (bijvoorbeeld datum, numeriek, alfanumeriek), een optionaliteit (verplicht of optioneel), een maximale lengte (aangegeven of door systeem bepaald), een naam, een omschrijving, en eventueel een domein (beperkingen in de toegestane waarden, bijvoorbeeld alleen 'true' en 'false' toegestaan).
- identificaties: een identificatie bestaat uit een minimale set van 1 of meer verplichte attributen en/of 1 of meer verplichte relaties waarmee een voorkomen van de entiteit uniek geïdentificeerd wordt. De primaire identificatie geldt als basis voor de primaire sleutel van de uit de entiteit te genereren tabeldefinitie. Voorbeeld: Entiteit medewerker in functie tijdvak (Het open tijdvak waarin de medewerker een bepaalde functie bekleedt), heeft als primaire identificatie: de relaties naar zowel medewerker als naar functie, en het relatie-attribuut begindatum in functie.
Elk van deze zaken wordt weergegeven met een bepaald symbool. Een entiteit wordt met een rechthoek weergegeven, een relatie wordt weergegeven met een ruit (welke met lijnen verbonden is aan de betrokken entiteiten), een attribuut wordt als een ovaal weergegeven, een identificerend attribuut wordt veelal onderstreept weergegeven, en een identificerende relatie wordt veelal met een dwarsstreepje weergegeven.
Het is ook mogelijk om een relatie tussen een entiteit en zichzelf te hebben. Dit heet wel een recursieve of zelf-refererende relatie. Zo kan een persoon een relatie "getrouwd met" hebben met een andere persoon. Bij een aansluitpunt van de relatie-lijn bij de entiteit wordt dan aangegeven wie met wie getrouwd is.
In tegenstelling tot in een relationeel model kan in een ER diagram wel attributen voorkomen met meer dan 1 waarde; men kan een verzameling gebruiken. Zo kan een persoon een attribuut hebben met de namen van zijn of haar kinderen: {Naam 1, Naam 2, Naam 3}.
[bewerken] Lijnen
De lijnen tussen een relatie en één of meer entiteiten kunnen aangepast worden om de betrokkenheid van de entiteiten bij de relatie weer te geven. Een werknemer kan bijvoorbeeld werken in maximaal 1 fabriek en in een fabriek kunnen 1 of meer werknemers werken. Het kan ook wenselijk zijn om in het ER diagram weer te geven dat een entiteit bij een relatie betrokken moet zijn, bijvoorbeeld "een werknemer werkt in één of meerdere fabrieken". In feite betekent dit ook: er kunnen geen werknemers zijn die niet bij een fabriek werken. Wanneer dit ER diagram vervolgens gebruikt wordt bij het opzetten van een database betekent dit dat er geen werknemers in de database aanwezig kunnen zijn die niet bij een fabriek werken - iets wat tijdens de ontwerpfase al werd weergegeven in het model.
In het model kunnen de volgende type lijnen gebruikt worden om betrokkenheid, in casu de kardinaliteit en de optionaliteit, aan te geven:
- een normale lijn: de entiteit is 0 of meer keer betrokken bij de relatie
- een normale lijn met pijl: de entiteit is 0 of 1 keer betrokken bij de relatie
- een dikke lijn: de entiteit is 1 of meer keer betrokken bij de relatie
- een dikke lijn met pijl: de entiteit is precies 1 keer betrokken bij de relatie
[bewerken] Onderverdelingen
Een entiteit kan ook worden onderverdeeld in andere entiteiten. Aan een universiteit kan een persoon worden onderverdeeld in de entiteiten student en docent. Deze onderverdeling wordt een IsA hiërarchie genoemd (is a betekent is een; een persoon is een student; een persoon is een docent). In een ER diagram wordt dit aangegeven met een driehoek. Deze onderverdeling hoeft niet volledig te zijn; er kunnen nog andere personen zijn die geen student of docent zijn (bijvoorbeeld administratief medewerkers, personeel, en dergelijke). Ook kan het zijn dat er overlap is tussen de onderverdeelde entiteiten; een persoon kan student en docent tegelijkertijd zijn. Deze zaken worden naast het symbool in het diagram aangeduid met de volgende (Engelse) termen:
- covering: de onderverdeling is volledig ("elke persoon is of student of docent")
- non-covering: tegenovergestelde van covering ("er kunnen nog andere personen zijn die geen student of docent zijn")
- overlapping: er is overlap tussen de onderverdeelde entiteiten ("een persoon kan zowel student als docent zijn")
- non-overlapping: tegenovergestelde van overlapping ("een persoon kan tot slechts één onderverdeling behoren")
[bewerken] Verschillen in notatie
De gebruikte notatie in ER-diagrammen verschilt. Naast kleine verschillen in bijvoorbeeld het gebruik van het aantal lijnen om het geheel overzichtelijk te houden, worden ook verschillende notaties gebruikt bij de betrokkenheid van entiteiten bij relaties.
Een andere manier om de betrokkenheid van entiteiten bij een relatie weer te geven, is door gebruik te maken van de getallen zelf in plaats van een normale of dikke lijn met of zonder pijl (zie ook hierboven). De getallen geven een onder- en bovengrens van de betrokkenheid:
- normale lijn: 0..* (dit weglaten kan ook)
- normale lijn met pijl: 0..1
- dikke lijn: 1..*
- dikke lijn met pijl: 1..1 (of gewoon 1)
[bewerken] Meer afbeeldingen
-
Een IsA hiërarchie. De entiteit Vervoermiddel wordt onderverdeeld in Auto, Trein en Bus. Deze onderverdeling is non-overlapping want één van de onderverdeelde entiteiten kan niet ook tegelijk een andere zijn en non-covering[1] want er kunnen ook nog andere vervoermiddelen bestaan naast deze drie (bijvoorbeeld een vliegtuig).
[bewerken] Zie ook
Bronnen, noten en/of referenties:
- Kifer, M., Bernstein, A., Lewis, Philip M., Database Systems - An Application-Oriented Approach tweede editie - ISBN 0321228383
- ↑ Dit is afhankelijk van de keuzes die men maakt: als men een model maakt waar alleen auto's, treinen en bussen in voorkomen (fictief voorbeeld: in het model van een bedrijf dat onderdelen maakt voor alleen auto's, treinen en bussen), dan is het waarschijnlijk wenselijker dat deze onderverdeling covering is.
| Zie de categorie Entity-relationship models van Wikimedia Commons voor meer mediabestanden. |