Professional Documents
Culture Documents
Database Design 20120423
Database Design 20120423
Database Design
2011
Inhoud
Data vs informatie Deel 1: ontwerp van een ERD
Entiteiten, instanties, attributen, identifiers ERD Relaties ERD-tekenafspraken Super- en subtypes Business rules (structural en procedural) Relationship transferability Relatietypes Redundante relaties Veel op veel-relaties oplossen Unique identifiers
Databases 1 Database Design 2
Inhoud
Deel 1: ontwerp van een ERD (vervolg)
Normalisatie (eerste, tweede en derde norm.-vorm) Hierarchie, recursive relationships Tijdsafhankelijke gegevens
Voorbeeld:
Data: Alle punten van het vak databases 1 Informatie: gemiddelde score op dit vak, aantal geslaagden,
Overzicht
In deze cursus worden Data Modeling en Database Design bekeken. De fase Database Build gebeurt pas later in SQL Server en werd al bekeken in MS Access De klant die een database nodig heeft zal zorgen voor een conceptual model (beschrijving van het probleem) Wij zullen hiervan een physical model moeten maken Dit physical model moet vervolgens omgezet worden naar een database-ontwerp
Databases 1 Database Design 6
Entiteiten
Entiteiten (Entities) zijn de dingen waarover data bewaard worden
Voorbeelden over een school: STUDENTen, DOCENTen, VAKken, LOKA(A)L(en) Meestal zelfstandige naamwoorden
Instanties
Instanties: de elementen aanwezig in een entiteit
Voorbeelden bij de entiteit STUDENT: S5042451, Jefke Verhagen, 2ELO/ICT3 S5044234, Bert Sauviller, 2ELO/ICT1 PERSOON: President Obama PRODUCT: Volkswagen Golf PRODUCT TYPE: Schoen BEROEP: Kok DIER: Hond
Instanties
Is HOND een instantie of een entiteit?
Als het gaat over soorten dieren dan zal de entiteit DIER een aantal instanties kunnen hebben zoals hond, kat, paard, Als het gaat over een hondenkennel dan kan de entiteit HOND een aantal instanties kunnen bevatten zoals terrir, poedel, labrador,
10
Attributen
Attributen (Attributes) geven meer informatie over de entiteiten
Ze helpen om op zoek te gaan naar specifieke data Voorbeelden Entiteit STUDENT: studentID, naam, adres, klas, Entiteit VAK: benaming, studiepunten, examenvorm,
Een attribuut bevat slechts n waarde (bvb. het adres van een persoon kan maar 1 waarde bevatten)
11
Attributen
Voorbeelden van attributen
KLANT: voor- en familienaam, leeftijd, schoenmaat, adres, emailadres AUTO: model, gewicht, catalogusprijs JOBOVEREENKOMST: startdatum, loon
De waarde van een attribuut kan een getal, tekst, datum, afbeelding, zijn. Dit moet aangegeven worden met een datatype (integer, text, boolean, image,) Sommige attribuutwaarden zijn veranderbaar (in de tijd), bvb. leeftijd, schoenmaat, Andere zijn niet-wijzigbaar, bvb. besteldatum, geboortedatum Als je de keuze hebt, kies dan de niet-wijzigbare (geboortedatum i.p.v. leeftijd)
Databases 1 Database Design 12
Attributen
Sommige attributen moeten een waarde bevatten (mandatory), bvb. De naam van een student Anderen zijn niet verplicht om een waarde te bevatten (optional, mogen de waarde NULL bevatten), bvb. GSMnummer Geef enkele attributen van de entiteit BOEK
13
Identifier
Unique Identifiers (UID) zijn nodig om de instanties van elkaar te onderscheiden
Voorbeelden: studentnummer, rijksregisternummer Meestal een fictief ID (oplopend getal) zoals bij een bankoverschrijving, offertenummer
14
ERD
Een Entity Relationship Diagram of ERD is een tool dat (de verbanden tussen) data kan weergeven, ongeacht welke type database later gaat gebruikt worden Een ERD is dus implementationfree 4 doelstellingen van een ERD
Alle benodigde data moet aanwezig zijn Data mag maar n keer voorkomen Geen data bewaren die kan afgeleid worden Plaats data op een voorspelbare logische plaats
15
Relaties
Niet alleen entiteiten zijn belangrijk binnen een ERD maar ook de relaties ertussen hebben een belangrijke rol Elke relatie
vormt een belangrijke schakel in het model geeft aan hoe entiteiten aan elkaar gelinkt worden bestaat tussen twee entiteiten of tussen dezelfde entiteit heeft steeds twee kanten is langs beide kanten benoemd heeft een optionality heeft een graad of cardinaliteit (geeft een aantal aan)
16
Relaties: voorbeelden
Voorbeeld 1 (vliegtuigreis)
Elke zetel kan aan n of meerdere passagiers verkocht worden (overbooking is mogelijk) Elke passagier kan n zetel kopen
Voorbeeld 2 (muziek)
Elke muzieknummer wordt geplaatst binnen n TYPE (rock, jazz, pop,) Optionaliteit: moet of kan?
Elk lied MOET ondergebracht worden in n type Elk type KAN n of meerdere liedjes omvatten
Kardinaliteit: hoeveel?
Elk lied moet ondergebracht worden in EXACT N type Elk type kan N OF MEERDERE liedjes omvatten
Databases 1 Database Design 17
Relaties: voorbeelden
Kunnen types bestaan zonder dat er liedjes toe behoren? Is dit logisch? Afgesproken regels bepalen de kardinaliteit
waarom mag een lied maar tot n type behoren? Als een lied tot meerdere types mag behoren: Elk lied moet ondergebracht worden in N OF MEERDERE types
18
Relaties: voorbeelden
Bespreek optionaliteit en kardinaliteit
Elke bestelling moet door exact n klant gebeuren Elke klant kan n of meerdere bestellingen doen
19
Relaties: voorbeelden
Een relatie kan een entiteit aan zichzelf koppelen
In een bedrijf werken managers en werknemers. Elke werknemer heeft n manager. Elke manager kan meerdere werknemers cordineren. Aangezien een manager ook een werknemer is van het bedrijf blijft er maar n entiteit over: WERKNEMER Elke werknemer kan n of meerdere werknemers cordineren Elke werknemer kan gecordineerd worden door n werknemer Waarom staat in beide voorgaande zinnen kan en niet moet?
20
ERD: tekenafspraken
Entiteiten worden voorgesteld door een softbox (afgeronde rechthoek) De namen van de entiteiten worden bovenaan de softbox geplaatst (in enkelvoud en in drukletters)
SONG
TYPE
21
ERD: tekenafspraken
Attributen worden onder de entiteitsnaam geplaatst Verplichte attributen worden aangegeven met een asterisk, * Optionele attributen worden aangegeven met een cirkel, o Unieke identifiers worden aangegeven met een hekje, #
CLIENT # number * first name * last name * phone number email address
22
ERD: tekenafspraken
Relaties worden door lijnen voorgesteld die de entiteiten met elkaar verbinden De lijnen
kunnen vol of onderbroken zijn eindigen in een single toe of een crows foot
23
Relaties
Relaties verklaren:
Elke relatie kan onderverdeeld worden in een 6-tal delen 1. Elke 2. Entiteit A 3. Optionaliteit
Moet: volle lijn Kan: onderbroken lijn
6. Entiteit B Aangezien een relatie twee uiteinden heeft , kan de relatie tweemaal besproken worden (links=>rechts, rechts=>links)
Databases 1 Database Design 24
Relaties
WERKNEMER AFDELING
Elke werknemer moet werken in exact n afdeling Elke afdeling kan de kostenplaats zijn voor n of meerdere werknemers Noteer zelf twee aan elkaar gekoppelde entiteiten en schrijf de verklarende zinnen op
25
Supertypes en subtypes
Soms bevatten instanties van entiteiten een aantal attributen of relaties die andere instanties niet bevatten Voorbeeld: betalingen
Klanten kunnen betalen via: cash, cheque en kredietkaart Alle betalingen hebben een aantal gemeenschappelijke attributen: betaaldatum, bedrag, Kredietkaart: ook het kredietkaartnummer moet bewaard worden Bij kredietkaart en cheque moet bijgehouden worden welke klant de betaling deed Oplossing?
En entiteit: BETALING Drie aparte entiteiten (maar wat als er een vierde betaalmogelijkheid bijkomt?)
Databases 1 Database Design 26
Supertypes en subtypes
Soms is het handig om een entiteit onder te verdelen in subtypes, hoofdentiteit wordt dan het supertype (te vergelijken met overerving in OO-programmering) Een subtype
Erft alle attributen n relaties van het supertype Heeft meestal nog eigen attributen of relaties Wordt binnen het supertype getekend Bestaat nooit alleen (er is steeds een tweede subtype) Kan zelf ook nog subtypes bevatten
Supertypes en subtypes
Supertype : EXAM Subtypes: MIDTERM, FINAL en QUIZ Relatie tussen EXAM en STUDENT Relatie tussen BONUS QUESTION en (enkel!) QUIZ FINAL bevat bvb. 6 attributen
28
Supertypes en subtypes
Er zijn altijd minstens twee subtypes: dit leidt tot twee regels
Exhaustive : elke instantie van een supertype is ook altijd een instantie van n van de subtypes Mutually exclusive: elke instantie van een supertype behoort tot exact n subtype
29
Business rules
Niet alle business rules (afspraken over de functionaliteiten van de database) kunnen in een ERD worden weergegeven. Deze moeten achteraf bijgeprogrammeerd worden Structural business rules: geven aan welke informatie moet bewaard worden en hoe deze aan elkaar gelinked is.
Kunnen meestal in een ERD worden weergegeven
30
Elke leraar moet over een geldig teaching certificate number beschikken
VAK
STUDENT
Een werknemer die meer dan 2 overuren per week doet moet 1,5 keer zijn uurloon verkrijgen Klanten die hun facturen na 30 dagen nog niet betaald hebben kunnen geen nieuwe bestellingen plaatsen Geef enkele voorbeelden op beide soorten business rules
Databases 1 Database Design 32
Relationship transferability
Kan een klas die aan een docent gekoppeld is (les krijgt) later een andere docent krijgen? Kan je je duurbetaalde fitness-abonnement doorgeven aan een vriend? Kan je het type/genre van een lied achteraf wijzigen?
33
Relationship transferability
Transfereerbare relaties
Een student kan na een bepaalde tijd overstappen naar een andere klas
EXAMEN
STUDENT
34
Relationship transferability
Andere voorbeelden?
35
Relatietypes
Kan een PERSOON meerdere CDs bezitten? Kan een CD in het bezit zijn van meerdere PERSONEN? De antwoorden op bovenstaande vragen hebben een effect op het ERD Er zijn drie types van relaties
n op veel (one-to-many) Veel op veel (many-to-many) n op n (one-to-one)
36
Relatietypes
n op veel-relatie
komen het meest voor in een ERD
WERKNEMER
AFDELING
37
Relatietypes
Veel op veel-relatie
Komen veel voor in de ontwerpfase van een ERD maar worden in latere stadia vervangen door n op veel-relaties
38
Relatietypes
n op n-relatie
Komen voor in de ontwerpfase van een ERD maar worden meestal weggewerkt
39
Redundante relaties
Een redundante relatie kan afgeleid worden van een andere relatie uit het model Linkerschema
Het land waarin de persoon woont kan afgeleid worden via de twee zwarte relaties (grijze) relatie is dus overbodig Rechterschema De relatie tussen persoon en land is anders dan in het linkerschema en kan niet afgeleid worden
Databases 1 Database Design 40
41
Intersection entity
Oplossing:
43
Oplossing:
44
Unique Identifiers
Een Unique Identifier is de waarde (of combinatie van waardes) die het mogelijk maakt voor de gebruiker om een uniek item uit alle instanties van een entiteit te halen Enkelvoudige UID
Een UID die maar n attribuut omvat
Samengesteld UID
Een UID die bestaat uit twee (of zelden nog meer) attributen
45
Unique Identifiers
Artificile UIDs zijn attributen die worden toegevoegd omdat in de entiteit geen volwaardig UID beschikbaar is
Voorbeelden:
Studentnummer, rijksregisternummer,
46
Unique Identifiers
Soms is de UID de combinatie van een attribuut en een relatie In onderstaand voorbeeld moet in gedachten gehouden worden dat een bankrekeningnummer bij meerdere banken kan gebruikt worden, bvb bankrek.nr 1256 kan bij bank A voorkomen maar ook bij bank B
Bij een overschrijving zal dus zowel het bankrek.nr als het banknummer moeten opgegeven worden
Databases 1 Database Design 47
Unique Identifiers
UIDs van barred relationships (veel op veel-relaties opgelost) De UID van PLAY LIST ITEM is afkomstig van EVENT en SONG, dus combinatie van EVENTid en SONGid De bars trekken de UIDs naar PLAY LIST ITEM en vormen daar samen het nieuwe UID
48
Unique Identifiers
Geef een voorbeeld van een intersection entity en bepaal hiervoor de UID
49
Unique Identifiers
Soms bestaan er meerdere attributen in een entiteit die zouden kunnen doorgaan voor UID. In dat geval spreekt men van kandidaat-UIDs Degene die gekozen wordt: Primary UID De andere kandidaten: Secundary UIDs n primary UID (studentID) en n secundary UID (badge number)
Unique Identifiers
51
Normalisatie
Normaliseren is het proces waarbij redundante gegevens in een database vermeden worden Er zijn drie normaalvormen (normalisatiestappen van Codd) die n voor n moeten doorlopen worden Na deze drie stappen: genormaliseerde database
52
53
54
Welk
Databases 1 Database Design
op zijn plaats?
56
Tweede normaalvorm
Enkel na te kijken bij een meervoudige UID
LESOPDRACHT # id Definitie: alle niet-UID-attributen mogen enkel afhankelijk # id # tijdstip zijn * naam van het ganse UID * benaming * adres Voorbeeld * DOCENTid initiaalDocent * lokaal bovenaan: initiaaldocent # semester DOCENT VAK
worden
is enkel afhankelijk van ECTS-fiche en moet dan ook naar die entiteit verplaatst
* studiepunten
57
58
59
Als ooit het adres zou wijzigen van de winkel dan moet dit bij alle CDs aangepast worden
Databases 1 Database Design 60
Oplossing:
61
62
Hierarchische structuur
Tijdsafhankelijke gegevens
Vele eigenschappen wijzigen in de loop der tijd: schoenmaat, loon, verhuurgegevens videotheek, procesgegevens in een bedrijf, Voorbeeld: loon bij werknemers
Via onderstaande entiteit kan enkel het huidige loon bewaard worden
Tijdsafhankelijke gegevens
Wat is de UID van de entiteit SALARY HISTORY? Combinatie van salary start date en EmployeeID
Waarom is het attribuut salary end date optioneel? Voor het huidige loon is de einddatum nog niet gekend
65
Tijdsafhankelijke gegevens
Een winkel verhuurt juwelen aan beroemdheden. Men wil per juweel de verhuurgeschiedenis kennis Via onderstaand ERD wordt enkel de huidige huurder bewaard
66
Tijdsafhankelijke gegevens
Je komt uit op een veel op veel-relatie
67
Tijdsafhankelijke gegevens
Oplossing:
68
Tijdsafhankelijke gegevens
Voor elke aankoop in onze groentenwinkel houden we gegevens bij:
We zouden het verband willen zien tussen aankoopgedrag en max- en min-temperatuur van die dag om zo beter aan stockbeheer te kunnen doen: Probleem: we zondigen tegen een normaalvorm, welke? De derde normaalvorm: Temperaturen zijn afhankelijk van datum
Databases 1 Database Design 69
Tijdsafhankelijke gegevens
Oplossing:
Een gelijkaardige structuur is nodig voor gegevens die van kostprijs wijzigen
70
Oefening 1
Noteer voor elke relatie zowel van links naar rechts als omgekeerd de verklarende zin Geef voor elke entiteit de UID
71
Oefening 2
Noteer voor elke relatie zowel van links naar rechts als omgekeerd de verklarende zin Geef voor elke entiteit de UID
72
73
Primary key
Een relationele database is een database waarbij de tweedimensionale tabellen aan elkaar gelinkt zijn d.m.v. relaties De primary key (primaire sleutel) is de kolom of combinatie van kolommen die een rij in een tabel uniek maakt
Foreign key
Een foreign key (FK, refererende sleutel) is een kolom in n tabel die gekoppeld is aan een primary key-kolom in een andere tabel De foreign key-kolom kan enkel waarden bevatten die in de primary-kolom van de andere tabel voorkomen (referentile integriteit)
75
Unique key
Een tabel kan soms meerdere primary keys bevatten
Kies n primaire sleutel De andere sleutels worden unique keys (UK) of kandidaatsleutels genoemd
76
Foreign key
Als een foreign key deel uitmaakt van een primary key dan kan deze FK niet NULL zijn
77
Database model
Tabel Rij of record Kolom of veld Primary key Unique key Foreign key veld
80
81
82
83
85
86
89
90
91
Oefening 1
Geef de tabellen voor elke entiteit met de attributen die erbij horen. Zorg voor een goede tabelnaam en afkorting tussen haakjes. Geef aanduidingen van primary key, unique key, foreign key, verplicht, optioneel.
92