Databases I (H.3) Het Entity-Relationship Model Wiebren de Jonge Vrije Universiteit, Amsterdam versie 2003
Overzicht DB design
Voorbeeld UoD u Een bedrijf is onderverdeeld in DEPARTMENTs. u Elke DEPARTMENT heeft een unieke naam, een uniek nummer en één employee die de manager van die DEPARTMENT is. De startdatum van de manager wordt ook bijgehouden. u Een DEPARTMENT kan meerdere locaties hebben en kan de leiding hebben over meerdere PROJECTs. u Elk PROJECT heeft een unieke naam, een uniek nummer, één locatie en één verantwoordelijke DEPARTMENT. u Een EMPLOYEE behoort tot één DEPARTMENT en heeft een SSN, naam, adres, geboortedatum, salaris, geslacht en één chef (direct supervisor). u Elke EMPLOYEE kan aan meerdere PROJECTs van verschillende (dus ook andere) DEPARTMENTs werken. Voor elk PROJECT waar hij/zij aan werkt, wordt bijgehouden hoeveel uren per week. u Een EMPLOYEE kan meerdere DEPENDENTs hebben, waarvan naam, geb.dat., geslacht en de relatie tot de employee wordt bijgehouden.
Voorbeeld ER-diagram (Fig. 3.2)
Entities (1/3) u entity instance:relevant object/ding in het UoD (kan zowel fysiek als abstract zijn) u attribute:een eigenschap van een entity u value:een waarde die een attribuut kan aannemen
Soorten attributen & null-waarden u soorten attributen: –atomic / composite –single-valued / multi-valued –stored / derived u null values: –Not Applicable –Missing –Unknown
Entities (2/3) u entity type: verzameling van alle mogelijke entity instances die hetzelfde concept vertegenwoordigen (en dus ook zelfde attributen hebben) u entity set: verzameling van alle entity instances van een bepaald entity type die op een bepaald moment in de database zitten u single-valued attribute:A: E V u multi-valued attribute:A: E (V)
Example: entity types vs. entity sets
Entity with composite & multivalued attribute
Entities (3/3) u key:minimale verzameling van attributen waarvoor geldt dat elke entity instance in de bijbehorende entity set altijd een unieke combinatie van attribuutwaarden heeft (b.v.: sofi_nummer van PERSOON) u key attribute:een attribuut dat tot een of andere key behoort Let op: deze definitie wijkt af van H.3 in het boek !!
Notatie college (i.t.t. notatie in boek)
Relationships (informeel) u relationship type: verbindt één of meerdere entity types EMPLOYEE WORKS_ON PROJECT u relationship set: verzameling van alle relationship instances van een bepaald relationship type die op een bepaald moment in de DB zitten u relationship instance: verbindt één of meerdere entity instances en heeft een specifieke betekenis EMPLOYEE John Smith WORKS_ON PROJECT productX
Relationships (formeel) u relationship type R := (E 1, E 2,..., E n ) waarbij E i entity types zijn u relationship set R E 1 E 2 ... E n waarbij E i entity sets zijn u relationship instance r := (e 1, e 2,..., e n ) waarbij e i entity instances zijn
Some more about relationships u Degree of a relationship: aantal deelnames van entity types –binary:degree 2 (b.v.: WORKS_ON en MANAGES) –ternary:degree 3 (b.v.: SUPPLIES) u Let op: –een entity type kan meerdere malen in een relationship type voorkomen (zie b.v.: SUPERVISES) –verschillende relationship types kunnen op dezelfde entity types zijn gedefinieerd (b.v.: WORKS_FOR en MANAGES) –relationship types kunnen ook attributen hebben
Relationship: binary & many-one
Relationship: binary & one-one
Relationship: binary & many-many
Relationship: ternair
Relationship: recursief
Relationships: structural constraints u cardinality ratio (for binary relationship types) : –1:1(b.v. MANAGES) –1:N of N:1(WORKS_FOR) –M:N(WORKS_ON) u participation constraint: –total participation (existence dependent) EMPLOYEE in WORKS_FOR –partial participation EMPLOYEE in MANAGES u structural constraints: cardinality ratio + participation constraints
Structural constraints: (min, max) notatie u gespecificeerd op iedere deelname (rol) van een entity type E in een relationship type R u specificeert in hoeveel relationship instances een entity (role) instance minimaal en maximaal mag voorkomen u default (geen constraint): (0, n) u “een department heeft precies één manager en een werknemer kan hooguit één department managen” –specificeer (1, 1) voor DEPARTMENT in MANAGES –specificeer (0, 1) voor EMPLOYEE in MANAGES u “een werknemer werkt voor precies één department en een department heeft minimaal vier werknemers” –specificeer (1, 1) voor EMPLOYEE in WORKS_FOR –specificeer (4, n) voor DEPARTMENT in WORKS_FOR
Weak entities u weak entity type: entity type zonder geheel eigen key u weak entity type moet deelnemen in een “identifying relationship type” met één (of meer) “identifying entity type(s)” = owner(s) u weak entity wordt geïdentificeerd door: eigen partial key + key van de owner u voorbeeld: EMPLOYEE HAS_CHILDREN CHILD (attributen: first_name + birthdate) –first_name is partial key –HAS_CHILDREN / IS_CHILD_OF is de identifying relationship type –EMPLOYEE is owner –CHILD geïdentificeerd door first_name (CHILD) + ssn (EMPLOYEE)
Overzicht notatie ER-diagram
Totale ER-diagram