De vierde normaalvorm plaagt me al bijna 2 decennia.
Stelling
4NF is onzin voor wie
0NF,
1NF,
2NF
en
3NF
goed uitvoert.
|
Heeft u wel een
overtuigend
voorbeeld van 4NF?
Neem onmiddellijk
contact met me op!
|
Codd's drie normaalvormen voor
logisch database ontwerp
zijn volgens mij
compleet.
- Er kan niets meer af.
- Er hoeft niets meer bij.
Een lezer van
de SUMit database design methode
stuurde me 2 URL's met voorbeelden van 4NF.
Die voorbeelden vond ik niet overtuigend.
Zie m'n alternatieve uitwerking hieronder,
geheel in lijn met m'n stelling,
tot een correcte derde normaalvorm.
1. Hondjes met pakjes
Het eerste voorbeeld, op
gslis.utexas.edu/.../normover.html,
beschrijft een 4NF oplossing voor hondjes die
- meerdere truukjes kunnen
- en die meerdere pakjes passen.
Alternatieve oplossing tot correct 3NF
|
Begin met de juiste set data elementen in UNF,
inclusief 'pakje' dat een hond kan dragen,
maar zonder
overbodige object-ids.
|
Kies de juiste keys in FNF zodat voor gegeven key waarden ieder data element slechts 1 waarde kan hebben.
|
Haal partkeys dependencies eruit in SNF.
Hondje-pakje
blijft vanzelf over als
koppeltabel.
Maak van
pakje
een keyonly tabel indien de lijst met pakjes toegevoegde waarde heeft.
|
Los de afhankelijkheid op tussen de dataelementen kennel naam en kennel adres.
|
0NF |
1NF |
2NF |
3NF |
puppy nummer
puppy naam
kennel naam
kennel adres
truuk naam
bekwaamheid
truuk waar geleerd
pakje naam
|
puppy nummer
truuk naam
pakje naam
kennel naam
puppy naam
kennel adres
bekwaamheid
truuk waar geleerd
|
puppy nummer
puppy naam
kennel naam
kennel adres
|
kennel naam
kennel adres
|
puppy nummer
puppy naam
* kennel naam
|
puppy nummer
truuk naam
bekwaamheid
truuk waar geleerd
|
puppy nummer
truuk naam
bekwaamheid
truuk waar geleerd
|
puppy nummer
pakje naam
|
puppy nummer
pakje naam
|
pakje naam
|
pakje naam
|
2. Studenten die cursussen volgen
Het tweede voorbeeld, op
www.cs.jcu.edu.au/.../node12.html,
beschrijft 4NF als een oplossing voor afhankelijkheden tussen key elementen onderling.
Pardon?
Waarom zou een element tot key promoveren in 1NF wanneer het afhankelijk is van een ander?
Pas
de eerste normaalvorm
goed toe en 4NF is niet meer van node.
Alternatieve oplossing tot correct 3NF
|
Kies in UNF de complete set dataelementen.
|
Per gegeven student nummer en cursus nummer hebben de overige elementen slechts één mogelijke waarde.
|
student naam is slechts afhankelijk van student nummer.
cursus naam is slechts afhankelijk van cursus nummer.
|
De 3NF is in dit voorbeeld gelijk aan 2NF.
Er zijn geen dataelementen met onderlinge afhankelijkheden.
|
0NF |
1NF |
2NF |
3NF |
student nummer
student naam
cursus nummer
cursus naam
inschrijvings datum
|
student nummer
cursus nummer
student naam
cursus naam
inschrijvings datum
|
student nummer
student naam
|
student nummer
student naam
|
cursus nummer
cursus naam
|
cursus nummer
cursus naam
|
student nummer
cursus nummer
inschrijvings datum
|
student nummer
cursus nummer
inschrijvings datum
|
Tot
de volgende week,
Henk Jan Nootenboom
|