Databases I Het Entity-Relationship Model definitieve versie 2002 Databases I Het Entity-Relationship Model Martin Caminada / Wiebren de Jonge Vrije Universiteit, Amsterdam
Overzicht database design
Voorbeeld UoD Company onderverdeeld in DEPARTMENTs, met unieke naam en nummer, alsmede een employee die de manager is. Startdatum van manager wordt bijgehouden. Een department kan meerdere locaties hebben. Elk department heeft de leiding over een aantal PROJECTs. Elk project heeft unieke naam en nummer, en heeft slechts één locatie. Een EMPLOYEE heeft een naam, SSN, adres, salaris, geslacht en geboortedatum. Elke employee werkt voor slechts één department, maar kan werken aan verschillende projecten (ook van andere afdelingen). Daarnaast worden voor employee bijgehouden: direct supervisor + aantal uren aan projecten. Een employee kan DEPENDENTs hebben (naam, geslacht, geb. datum en relatie tot employee).
Voorbeeld ER-diagram
Entities (1/3) entity instance: reëel bestaand object/ding in het UoD kan zowel fysiek als abstract zijn attribute: een eigenschap van een entity value: een waarde die een attribuut kan aannemen soorten attributen: atomic / composite single-valued / multi-valued stored / derived null values: Not Applicable Missing Unknown
Entities (2/3) entity type: verzameling van alle mogelijke entity instances die hetzelfde concept vertegenwoordigen (en dus ook zelfde attributen hebben) entity set: verzameling van alle entity instances van een zekere entity type die op een bepaald moment in de database zitten single valued attribute: A: E V multi valued attribute: A: E (V)
Entities met simple attributes
Entity met composite/multivalued attributes
Let op: deze definitie wijkt af van het boek! Entities (3/3) key: minimale verzameling van één of meerdere attributen die uniek zijn voor iedere entity instance van een bepaalde entity type (voorbeeld: sofi_nummer van PERSOON) key attribute: een attribuut dat tot een bepaalde key behoort Let op: deze definitie wijkt af van het boek!
Notatie college (i.t.t. notatie boek)
Relationships (informeel) relationship instance: verbindt één of meerdere entity instances en heeft specifieke betekenis EMPLOYEE John Smith WORKS_ON PROJECT productX relationship set: bevat alle relationship instances in een bepaalde database relationship type: verbindt één of meerdere entity types EMPLOYEE WORKS_ON PROJECT
Relationships (formeel) relationship instance r := (e1 , e2 , ... , en) met ei entity instances relationship set R E1 , E2 ... En met Ei entity sets relationship type R := (E1 , E2 , ... , En ) met Ei entity types
Relationships (tot slot) degree of a relationship: aantal participaties van entity types binary: degree 2 (bv: WORKS_ON / MANAGES) ternary: degree 3 (bv: SUPPLIES) let op: een entity type kan meerdere malen in een relationship type voorkomen (bv: SUPERVISES) verschillende relationship types kunnen op dezelfde entity types zijn gedefinieerd (bv: WORKS_FOR en MANAGES) relationship types kunnen ook attributen hebben
Relaties: binair / many-one
Relaties: binair / one-one
Relaties: binair / many-many
Relaties: ternair
Relaties: “recursive” relationships
Structural constraints cardinality ratio (for binary relationship types): 1:1 (MANAGES) 1:N N:1 (WORKS_FOR) M:N (WORKS_ON) participation constraint: total participation (existence dependent) EMPLOYEE in WORKS_FOR partial participation EMPLOYEE in MANAGES structural constraints: cardinality ratio + participation constraints
(min, max) notatie structural constraints gespecificeerd op iedere participatie (rol) van een entity type E in een relationship type R specificeert in hoeveel relationship instances een entity instance (role) minimaal en maximaal mag voorkomen default (geen constraint): (0, n) “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 “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 weak entity type: entity type zonder geheel eigen key weak entity type moet participeren in identifying relationship type met identifying entity type (= owner) weak entity wordt geïdentificeerd door partial key + key van de owner voorbeeld: EMPLOYEE HAS_CHILDREN CHILD (attributen: first_name + birthdate) first_name is partial key 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
Thuis nalezen: Hoofdstuk 3 voorbereiden: 4.1, 4.2, 4.7