3NF versus BCNF
Normalisatie 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 zijn aan elkaar gerelateerd door middel van goed gedefinieerde relaties. In een goed genormaliseerde database moet voor elke wijziging of wijziging van gegevens slechts één tabel worden gewijzigd. Third Normal Form (3NF) werd in 1971 geïntroduceerd door Edgar F. Codd, die ook de uitvinder is van het relationele model en het concept van normalisatie. Boyce-Codd Normal Form (BCNF) werd in 1974 geïntroduceerd door Codd en Raymond F. Boyce.
Wat is 3NF?
3NF is de derde normale vorm die wordt gebruikt bij normalisatie van relationele databases. Volgens de definitie van Codd is een tabel naar verluidt in 3NF, als en alleen als, die tabel in de tweede normale vorm (2NF) is en elk attribuut in de tabel dat niet tot een kandidaatsleutel behoort direct afhankelijk moet zijn van elke kandidaat-sleutel van die tafel. In 1982 produceerde Carlo Zaniolo een verschillend uitgedrukte definitie voor 3NF. Tabellen die voldoen aan de 3NF bevatten over het algemeen geen anomalieën die optreden bij het invoegen, verwijderen of bijwerken van records in de tabel.
Wat is BCNF?
BCNF (ook bekend als 3.5NF) is een andere normale vorm die wordt gebruikt in relationele database-normalisatie. Het werd geïntroduceerd om enkele anomalieën vast te leggen die niet worden aangepakt door de 3NF. Een tabel is naar verluidt in BCNF, als en alleen als, voor elk van de afhankelijkheden van de vorm A → B die niet-triviaal zijn, A een super-sleutel is. Het decomposeren van een tabel die niet in de normale BCNF-vorm is, garandeert niet de productie van tabellen in de BCNF-vorm (met behoud van de afhankelijkheden die aanwezig waren in de oorspronkelijke tabel).
Wat is het verschil tussen 3NF en BCNF?
Zowel 3NF als BCNF zijn normale vormen die worden gebruikt in relationele databases om overtolligheden in tabellen te minimaliseren. In een tabel die in de normale BCNF-vorm is, is voor elke niet-triviale functionele afhankelijkheid van de vorm A → B, A super-toets terwijl een tabel die voldoet aan 3NF zich in de 2NF moet bevinden en elke niet-priemgetal attribuut moet direct afhankelijk zijn van elke kandidaatsleutel van die tabel. BCNF wordt beschouwd als een sterkere normale vorm dan de 3NF en het werd ontwikkeld om enkele anomalieën op te vangen die niet door 3NF konden worden vastgelegd. Het verkrijgen van een tabel die voldoet aan het BCNF-formulier zal het ontbinden van een tabel in de 3NF vereisen. Deze decompositie resulteert in extra join-bewerkingen (of Cartesiaanse producten) bij het uitvoeren van query's. Dit zal de computertijd doen toenemen. Aan de andere kant zouden de tabellen die voldoen aan BCNF minder overtolligheden hebben dan tabellen die alleen voldoen aan 3NF. Bovendien is het meestal mogelijk om een tabel te verkrijgen die voldoet aan 3NF zonder afhankelijkheidsbehoud en verbinding zonder verlies te belemmeren. Maar dit is niet altijd mogelijk met BCNF.