EERDER….
Tabellen rij (record, tuple, occurence) kolom (attribuut, veld) tabel (relatie) tabelstructuur : patient(PAT#,PNAAM,LEEFTIJD,GESLACHT,ARTS) domein (‘M’,’V’) waarde=’V ’
Entiteit Relatie Diagram Elementen Entiteiten Attributen Identifiers Relaties
Functionele afhankelijkheid(1) Functionele afhankelijkheid = verband tussen attributen Attribuut Y is functioneel afhankelijk van attribuut X als de waarde van X de waarde van Y bepaalt. De waarde wordt verkregen door “opzoeken” in de database. Notatie: Studentnummer afstudeervak Computernummer geheugenomvang Determinant Samengestelde determinant Voorbeeld: CIJFERS(Studentnummer,Vak,Cijfer) (Studentnummer,Vak) Cijfer
Sleutels Een sleutel is een groep van één of meerdere attributen waardoor een rij uniek wordt geïdentificeerd
NORMALISEREN
Modificatie anomalieën Verwijder anomalie Invoeg anomalie
Normaliseren Het voorkomen van anomalieën
Referentiële integriteit STU_ACT[Activiteit] ACT_KOST[Activiteit]
Kern van normalisatie elk genormaliseerde relatie heeft één onderwerp een relatie die twee of meerdere onderwerpen bevat, moet worden gesplitst in twee of meerdere relaties
Normaalvormen
Eerste normaalvorm Een tabel die voldoet aan de voorwaarden voor een relatie, is in de eerste normaalvorm.
Tweede normaalvorm Een relatie is in de tweede normaalvorm als alle attributen die niet in de sleutel zijn opgenomen, afhankelijk zijn van de gehele sleutel.
Derde normaalvorm Een relatie is in de derde normaalvorm als het in de tweede normaalvorm is en geen transitieve afhankelijkheden kent. Transitieve afhankelijkheid
3e normaalvorm (3NF)
Verbanden tussen attributen Eén op één verband A B en B A Eén op veel verband A B, maar niet B A Veel op veel verband niet A B en niet B A
Database ontwerp : Hoe doe je het? Ontwerpmethoden: E/R (entity-relationship) semantisch object model Controle: normaliseren
Database ontwerp voorbeeld: administratie van uitgeleende boeken (1) Voor wie? de eigenaar van de boeken Functie : het geven van een actueel overzicht van alle uitgeleende boeken; bovendien per boek: aan wie (het boek is uitgeleend) sinds wanneer (het boek is uitgeleend)
Database ontwerp voorbeeld: administratie van uitgeleende boeken (2) Bedenk eerst …. hoe je het zonder geautomatiseerd systeem zou doen! ?
Database ontwerp voorbeeld: administratie van uitgeleende boeken (3) Bedenk eerst hoe je het zonder geautomatiseerd systeem zou doen! schrift met 1 regel per uitgeleend boek (auteur, titel, lener_naam, lener_telnr, sinds) spreadsheet vgl. database met 1 tabel:‘uitgeleende boeken’
Database ontwerp voorbeeld: administratie van uitgeleende boeken (4) Problemen: wijzigen van telnr op meerdere plaatsen bij terugbrengen boek ook telnr weg Hoe komt dit ? afhankelijkheid : lener_naam -> lener_telnr lener_naam is een determinant van lener_telnr
Database ontwerp voorbeeld: administratie van uitgeleende boeken (5) Oplossing: 2 tabellen schrift met uitgeleende boeken adresboekje (of GSM telefoon): naam + telnr
Normalisatie: 1NF (first normal form) Definitie 1NF: Een tabel is in 1NF als voor elke waarde van die tabel elke rij precies 1 waarde voor elke attribuut heeft voorbeeld: in de tabel leners heeft elke rij 1 naam en 1 telnr
Normalisatie: 2NF Definitie 2NF: (aanname: er is slechts 1 kandidaat sleutel die de primaire sleutel is) Een tabel is in 2NF als deze in 1NF is, en elk niet-sleutel attribuut (op de een of andere manier) afhankelijk is van de primaire sleutel
Normalisatie: 2NF PK
Normalisatie: 2NF PK
Normalisatie: 3NF Definitie 3NF: (aanname: er is slechts 1 kandidaat sleutel die de primaire sleutel is) Een tabel is in 3NF als deze in 2NF is, en elk niet-sleutel attribuut niet-transitief afhankelijk is van de primaire sleutel
Normalisatie: 3NF PK 2NF3NF