IAM-TDI-SQL-1011

Download Report

Transcript IAM-TDI-SQL-1011

SQL DEEL 2: DATAMODEL ONTWERP
Datamodel + DB schema
Criteria
ZELF EEN DATABASE MAKEN, ZIE MAAR …
DVD/ CD collectie
• Artiesten, groepen, platen, nummers, etc
Sporttoernooi
• Teams, wedstrijden, uitslagen, etc
Schoolorganisatie
• Studenten, klassen , vakken, werkgroepen, docenten,
beoordelingen, etc
Familiebanden
• Ouders, kinderen, huwelijken, etc.
OP TE LEVEREN IN WEEK 9:
ÉÉN DOCUMENT MET DAARIN
1.
2.
3.
4.
5.
Domein afbakening
Entiteiten Relatie Diagram + toelichting
Tabel Definities
Eventueel voorbeeld Data
Queries ( VIEWS )
ONTWERPEN
1.
Afbakening van het domein
1.
2.
2.
Conceptueel model: ERD op papier !
1.
2.
3.
3.
Beschrijven van de relevante informatie
Beschrijven van gebruiksmogelijkheden (use cases)
Benoemen van entiteiten, attributen en relaties
Entity relation diagram
Functionele toetsing
Fysiek model: ERD in mySQL WorkBench
1.
2.
3.
Datatypen
Primary Keys & Foreign Keys
Views
HOE MAAK JE EEN ERD?
1. Zoek entiteiten
•
•
Meer dan één attribuut
Betekenisvolle business termen
2. Vraag je af welke relaties (soorten) er zijn tussen de
entiteiten : 1 – op – 1, 1 – op – n , n – op – n
3. Vraag je af of de relatie verplicht is of optioneel
ENTITEITEN
Betekenisvolle business termen
Voorbeelden:
KLANT
VGM12
PROJECT
ORDER
WERKNEMER
6
ACHTERHALEN VAN DE KARDINALITEIT
Vragen:
• één student, hoeveel afstudeerderbegeleiders kan deze maximaal hebben?
• kan een student ook géén afstudeerbegeleider hebben?
•
•
Maximum: één afstudeerbegeleider, hoeveel studenten kan deze maximaal begeleiden?
kan een afstudeerbegeleider ook géén studenten begeleiden?
STUDENT
VGM12
heeft
AFSTUDEERBEGELEIDER
7
ACHTERHALEN VAN DE KARDINALITEIT
Een student heeft geen ( bolletje) of één afstudeerbegeleider.
Een afstudeerbegeleider begeleidt één (minimum) of meer (harkje) studenten.
STUDENT
child tabel
VGM12
heeft
AFSTUDEERBEGELEIDER
parent tabel
8
OPDRACHT.
Maak een eerste versie van een ERD voor Jari amusement op papier
Controleer
• Zijn alle belangrijkste entiteiten gevonden?
• Zijn de attributen in kaart gebracht?
• Zijn de relaties in kaart gebracht?
VAN ERD NAAR DATABASE SCHEMA
1 – op – 1 : in één van beide tabellen verwijssleutel
1 – op – n : alleen aan de n- kant een verwijssleutel ( harkje)
n – op – n : extra (koppel) tabel
Optioneel  verwijssleutel mag NULL zijn
Verplicht  verwijssleutel mag NIET NULL zijn (NN)
Gelukkig regelt MySQL Workbench .. Dit voor het grootste deel zelf.
MYSQL WORKBENCH
1. Tabellen, recht toe recht aan
2. Relaties,
• Identifying
• 1 – op – 1 , 1 – op – n , n – op – n
•
NON identifying
•
•
Klik eerst de child tabel, dan de parent tabel
Geef vervolgens op de juiste plek aan mandatory yes/no
CRITERIA VOOR EEN GOED DATAMODEL
NAAMGEVING
Geen spaties ( eventueel underscore _ )
Geen gekke karakters
Geen afkortingen
Niet beginnen met een cijfer
Consistent gebruik hoofdletters
Beschrijvend
• De naam beschrijft het element precies,
• Laat niets te raden over.
• Liever een lange naam, dan een onduidelijke naam
TABELNAAM: ENKELVOUD
Tabel naam: Enkelvoud
forum
 berichtID
 auteur
 tekst
 datum
berichten
 berichtID
 auteur
 tekst
 datum
bericht
 berichtID
 auteur
 tekst
 datum
NAAMGEVING ATTRIBUUT/KOLOM
bericht
 berichtID
 berichtauteur
 berichtTekst
 datum
bericht
 berichtID
 auteurID
 tekst
 datum
DATA-ELEMENTEN ZIJN ‘ATOMAIR’
Geen samengestelde waarden in één kolom
• Fout: Voor+achternaam, straat+nummer+plaats
Geen herhalende waarden in één tabelcel
• Fout: Komma gescheiden lijst productnummers
(wel: gebruik een aparte tabel)
Laat de betekenis niet afhangen van andere elementen
• Fout: Bij temperatuur de ene keer Kelvin en de andere keer
Celcius.
VERMIJDT REDUNDANTIE
Iedere rij in een tabel bevat attributen van één entiteit en niets dan
attributen van die ene entiteit, of is een verwijssleutel
Iedere rij heeft een unieke sleutel ( of gecombineerde sleutel )
Data-elementen die afgeleid kunnen worden mogen niet in de tabel
voor komen
“3DE NORMAALVORM”
Regel 1: eenvoud
Data-elementen zijn atomair
Regel 2: vermijdt redundantie
Per rij, een entiteit (zo niet dan tabel splitsen )
Geen kolommen die berekend kunnen worden
Geen relaties die afgeleid kunnen worden
HUISWERK
Download mySQLWorkBench
Maak een genormaliseerde versie van een ERD voor jouw
database, waarbij de nadruk ligt op
• volledigheid
• Zijn alle belangrijkste entiteiten gevonden
• Zijn de attributen in kaart gebracht
• Zijn de relaties in kaart gebracht
• 3de normaalvorm
• Atomaire data-elementen
• Geen redundante data
• Geen redundante relaties