190 likes | 352 Views
Datamodel + DB schema Criteria. SQL deel 2: datamodel ontwerp. Zelf een database maken , zie maar …. DVD/ CD collectie Artiesten, groepen, platen, nummers, etc Sporttoernooi Teams, wedstrijden, uitslagen, etc Schoolorganisatie
E N D
Datamodel + DB schema Criteria SQL deel 2: datamodel ontwerp
Zelfeen 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 • Domeinafbakening • EntiteitenRelatie Diagram + toelichting • TabelDefinities • Eventueelvoorbeeld Data • Queries ( VIEWS )
Ontwerpen • Afbakening van het domein • Beschrijven van de relevante informatie • Beschrijven van gebruiksmogelijkheden (use cases) • Conceptueel model: ERD op papier ! • Benoemen van entiteiten, attributen en relaties • Entity relation diagram • Functionele toetsing • Fysiek model: ERD in mySQL WorkBench • Datatypen • Primary Keys & Foreign Keys • Views
Hoe maak je een ERD? • Zoek entiteiten • Meer dan één attribuut • Betekenisvolle business termen • Vraag je af welke relaties (soorten) er zijn tussen de entiteiten : 1 – op – 1, 1 – op – n , n – op – n • Vraag je af of de relatie verplicht is of optioneel
Entiteiten Betekenisvolle business termen Voorbeelden: VGM12
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? VGM12
Achterhalen van de kardinaliteit Een student heeft geen ( bolletje) of één afstudeerbegeleider. Een afstudeerbegeleider begeleidt één (minimum) of meer (harkje) studenten. parent tabel child tabel VGM12
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.
MySQlworkbench • Tabellen, recht toe recht aan • 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
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