Inhoud

De derde normaalvorm (3NF)

De derde normaalvorm: transitieve afhankelijkheden, een moeilijke term voor iets vrij eenvoudigs.

  • De database voldoet aan alle regels van de tweede normaalvorm.
  • Van een tabel die voldoet aan de derde normaalvorm zijn alle velden die geen primaire sleutel zijn uitsluitend afhankelijk van de primaire sleutel.

Zie de volgende klantentabel van een voetbalschoenenhandel.

Tabel

In bovenstaande tabel zijn niet alle gegevens uitsluitend afhankelijk van de primaire sleutel. Er zijn nog andere relaties tussen de gegevens in een record: uit de postcode is de plaatsnaam en de provincie af te leiden. Er bestaat een 'transitieve relatie' tussen deze gegevens.

Welnu, afsplitsen is zeker mogelijk en wordt in de praktijk ook weleens gedaan. Je kunt in de klantentabel voor ellke klant alleen de (eerste 4 cijfers van de) postcode opslaan en de bijhorende gegevens (provincie, plaatsnaam) in een aparte tabel stoppen. Deze aparte postcode-plaatsnaam-provincie tabel kun je kopen.

Een ander voorbeeld van de toepassing van de derde normaal is deze (veel te) eenvoudige bestellingentabel van een Nederlandse webwinkel.

De relatie tussen het totaalbedrag exclusief BTW en het totaalbedrag inclusief BTW is duidelijk. Het bedrag inclusief BTW is altijd 19% hoger dan het bedrag exclusief BTW. De waardes van de twee prijskolommen zijn uit elkaar af te leiden. In dit geval zou je én van de twee kolommen moeten verwijderen. Het omrekenen tussen exclusief en inclusief BTW laat je over aan het programma dat van de database gebruik maakt. Kort gezegd: je hoort nooit gegevens op te slaan die af te leiden zijn uit andere gegevens in de tabel. In de praktijk wordt zeker bij kleinere applicaties de derde normaalvorm niet altijd toegepast.