3NF vs BCNF
Normalisering er en proces, der udføres for at minimere de afskedigelser, der findes i data i relationelle databaser. Denne proces vil primært opdele store tabeller i mindre tabeller med færre afskedigelser. Disse mindre tabeller vil være relateret til hinanden gennem veldefinerede forhold. I en godt normaliseret database kræver enhver ændring eller ændring i data kun ændring af en enkelt tabel. Tredje normal form (3NF) blev introduceret i 1971 af Edgar F. Codd, der også er opfinderen af den relationelle model og begrebet normalisering. Boyce-Codd Normal Form (BCNF) blev introduceret i 1974 af Codd og Raymond F. Boyce.
Hvad er 3NF?
3NF er den tredje normale form, der bruges i relationel databasegenormalisering. I henhold til Codd's definition siges en tabel at være i 3NF, hvis og kun hvis, den tabel er i den anden normale form (2NF), og hver attribut i tabellen, der ikke hører til en kandidatnøgle, skal direkte afhænge af hver kandidatnøgle i tabellen. I 1982 producerede Carlo Zaniolo en anderledes udtrykt definition for 3NF. Tabeller, der overholder 3NF, indeholder generelt ikke afvigelser, der opstår, når der indsættes, slettes eller opdateres poster i tabellen.
Hvad er BCNF?
BCNF (også kendt som 3.5NF) er en anden normal form, der bruges i relationel database-normalisering. Det blev introduceret for at fange nogle af de unormalier, der ikke adresseres af 3NF. En tabel siges at være i BCNF, hvis og kun hvis A er en supernøgle for hver af afhængighederne af form A → B, som er ikke-trivielle. Nedbrydning af en tabel, der ikke er i BCNF-normal form, garanterer ikke produktionen af tabeller i BCNF-formen (samtidig med at de afhængigheder, der var til stede i den originale tabel) bevares.
Hvad er forskellen mellem 3NF og BCNF?
Både 3NF og BCNF er normale former, der bruges i relationelle databaser for at minimere afskedigelser i tabeller. I en tabel, der er i BCNF-normal form, for enhver ikke-triviel funktionel afhængighed af form A → B, er A en supernøgle, mens en tabel, der overholder 3NF, skal være i 2NF, og enhver ikke-prime attribut skal direkte afhænge af hver kandidatnøgle i den tabel. BCNF betragtes som en stærkere normal form end 3NF, og den blev udviklet til at fange nogle af de anomalier, der ikke kunne fanges af 3NF. At få en tabel, der overholder BCNF-formularen, kræver at dekomponere en tabel, der findes i 3NF. Denne nedbrydning vil resultere i yderligere sammenkoblingsoperationer (eller kartesiske produkter), når der udføres forespørgsler. Dette øger beregningstiden. På den anden side ville tabellerne, der overholder BCNF, have færre afskedigelser end tabeller, der kun overholder 3NF. Desuden er det for det meste muligt at få en tabel, der overholder 3NF uden at hindre bevaring af afhængighed og tabsfri sammenføjning. Men dette er ikke altid muligt med BCNF.