Basis van databases
De primaire sleutel van de tabel Bestelling (BestelNr, ArtikelNr, Aantal, KlantNr, Klantnaam) is {BestelNr, ArtikelNr}, en de functionele afhankelijkheden zijn {BestelNr, ArtikelNr} → Aantal, BestelNr → KlantNr en KlantNr → Klantnaam. Wat is het juiste resultaat van de normalisatie van deze tabel tot de derde normaalvorm?
- ABestelregel (BestelNr, ArtikelNr, Aantal, KlantNr), Klant (KlantNr, Klantnaam)
- BBestelregel (BestelNr, ArtikelNr, Aantal), Bestelling (BestelNr, KlantNr), Klant (KlantNr, Klantnaam)
- CBestelregel (BestelNr, ArtikelNr, Aantal), Bestelling (BestelNr, KlantNr, Klantnaam)
Antwoord en toelichting tonen
Antwoord: B. Bestelregel (BestelNr, ArtikelNr, Aantal), Bestelling (BestelNr, KlantNr), Klant (KlantNr, Klantnaam)
De tweede normaalvorm is een toestand in de eerste normaalvorm waarin geen kolom afhangt van slechts een deel van de primaire sleutel (geen partiële functionele afhankelijkheid). BestelNr → KlantNr is een partiële functionele afhankelijkheid, omdat KlantNr alleen door BestelNr wordt bepaald, dat slechts een deel van de primaire sleutel is; de oorspronkelijke tabel is dus in de eerste normaalvorm, maar niet in de tweede. Door de kolommen die door BestelNr worden bepaald af te splitsen naar Bestelling (BestelNr, KlantNr, Klantnaam), ontstaat de tweede normaalvorm. De derde normaalvorm is een toestand in de tweede normaalvorm waarin geen kolom wordt bepaald via een andere kolom dan de primaire sleutel (geen transitieve functionele afhankelijkheid). In Bestelling zit nog de transitieve functionele afhankelijkheid BestelNr → KlantNr → Klantnaam, dus wordt ook Klant (KlantNr, Klantnaam) afgesplitst. De drie tabellen Bestelregel (BestelNr, ArtikelNr, Aantal), Bestelling (BestelNr, KlantNr) en Klant (KlantNr, Klantnaam) zijn dan in de derde normaalvorm. Door ze op BestelNr en KlantNr te joinen, ontstaat de oorspronkelijke tabel weer.