1NF vs 2NF vs 3NF
Normalisering is een proces dat wordt uitgevoerd om de overtolligheden die aanwezig zijn in gegevens in relationele databases te minimaliseren. Dit proces verdeelt voornamelijk grote tabellen in kleinere tabellen met minder overtolligheden. Deze kleinere tabellen worden aan elkaar gerelateerd door middel van goed gedefinieerde relaties. In een goed genormaliseerde database hoeft voor elke wijziging of wijziging in gegevens slechts één enkele tabel te worden gewijzigd. De eerste normaalvorm (1NF), de tweede normaalvorm (2NF) en de derde normaalvorm (3NF) werden geïntroduceerd door Edgar F. Codd, die ook de uitvinder is van het relationele model en het concept van normalisatie.
Wat is 1NF?
1NF is de eerste normaalvorm, die de minimale set vereisten biedt voor het normaliseren van een relationele database. Een tabel die voldoet aan 1NF verzekert dat het daadwerkelijk een relatie vertegenwoordigt (d.w.z. het bevat geen records die zich herhalen), maar er is geen universeel aanvaarde definitie voor 1NF. Een belangrijke eigenschap is dat een tabel die voldoet aan 1NF geen attributen kan bevatten die relationele waarde hebben (d.w.z. alle attributen zouden atomaire waarden moeten hebben).
Wat is 2NF?
2NF is de tweede normaalvorm die wordt gebruikt in relationele databases. Om een tabel te laten voldoen aan 2NF, moet deze voldoen aan 1NF en elk attribuut dat geen deel uitmaakt van een kandidaatsleutel (d.w.z. niet-prime attributen) moet volledig afhankelijk zijn van een van de kandidaatsleutels in de tabel.
Wat is 3NF?
3NF is de derde normaalvorm die wordt gebruikt bij het normaliseren van relationele databases. Volgens de definitie van Codd zou een tabel in 3NF zijn, als en slechts als, die tabel in de tweede normaalvorm (2NF) is, en elk attribuut in de tabel dat niet tot een kandidaatsleutel behoort, moet direct afhankelijk zijn van op elke kandidaatsleutel van die tafel. In 1982 produceerde Carlo Zaniolo een anders uitgedrukte definitie voor 3NF. Tabellen die voldoen aan de 3NF bevatten over het algemeen geen afwijkingen die optreden bij het invoegen, verwijderen of bijwerken van records in de tabel.
Wat is het verschil tussen 1NF en 2NF en 3NF?
1NF, 2NF en 3NF zijn normale vormen die in relationele databases worden gebruikt om overtolligheden in tabellen te minimaliseren. 3NF wordt beschouwd als een sterkere normaalvorm dan de 2NF en wordt beschouwd als een sterkere normaalvorm dan 1NF. Daarom vereist het verkrijgen van een tabel die voldoet aan het 3NF-formulier in het algemeen het ontleden van een tabel die zich in het 2NF bevindt. Evenzo vereist het verkrijgen van een tabel die voldoet aan de 2NF het ontleden van een tabel die zich in de 1NF bevindt. Als een tabel die voldoet aan 1NF echter kandidaatsleutels bevat die slechts uit één attribuut bestaan (d.w.z. niet-samengestelde kandidaatsleutels), zou zo'n tabel automatisch voldoen aan 2NF. Decompositie van tabellen zal resulteren in extra join-bewerkingen (of Cartesiaanse producten) bij het uitvoeren van query's. Hierdoor zal de rekentijd toenemen. Aan de andere kant zouden de tabellen die voldoen aan sterkere normaalvormen minder redundanties hebben dan tabellen die alleen voldoen aan zwakkere normaalvormen.