3NF vs BCNF
Normalisering är en process som utförs för att minimera de redundanser som finns i data i relationsdatabaser. Denna process kommer huvudsakligen att dela upp stora tabeller i mindre tabeller med färre redundanser. Dessa mindre tabeller kommer att vara relaterade till varandra genom väldefinierade relationer. I en väl normaliserad databas kommer varje ändring eller modifiering av data att kräva modifiering av endast en enda tabell. Third Normal Form (3NF) introducerades 1971 av Edgar F. Codd, som också är uppfinnaren av relationsmodellen och begreppet normalisering. Boyce-Codd Normal Form (BCNF) introducerades 1974 av Codd och Raymond F. Boyce.
Vad är 3NF?
3NF är den tredje normalformen som används vid normalisering av relationsdatabas. Enligt Codds definition sägs en tabell vara i 3NF, om och bara om den tabellen är i den andra normala formen (2NF), och varje attribut i tabellen som inte tillhör en kandidatnyckel bör direkt bero på varje kandidatnyckel i den tabellen. 1982 producerade Carlo Zaniolo en annorlunda uttryckt definition för 3NF. Tabeller som överensstämmer med 3NF innehåller i allmänhet inga avvikelser som uppstår när man infogar, tar bort eller uppdaterar poster i tabellen.
Vad är BCNF?
BCNF (även känd som 3.5NF) är en annan normal form som används i relationsdatabasnormalisering. Det introducerades för att fånga några avvikelser som inte tas upp av 3NF. En tabell sägs vara i BCNF, om och endast om, för vart och ett av beroenden av formen A → B som är icke-triviala, A är en supernyckel. Att dekomponera en tabell som inte är i BCNF-normalformen garanterar inte produktionen av tabeller i BCNF-formen (samtidigt som de beroenden som fanns i den ursprungliga tabellen bevaras).
Vad är skillnaden mellan 3NF och BCNF?
Både 3NF och BCNF är normala former som används i relationsdatabaser för att minimera redundanser i tabeller. I en tabell som är i normalformen BCNF, för varje icke-trivi alt funktionellt beroende av formen A → B, är A en supernyckel medan en tabell som överensstämmer med 3NF bör vara i 2NF, och varje icke-primtal attribut bör direkt bero på varje kandidatnyckel i den tabellen. BCNF anses vara en starkare normalform än 3NF och den utvecklades för att fånga några av de anomalier som inte kunde fångas av 3NF. För att erhålla en tabell som överensstämmer med BCNF-formuläret krävs att en tabell som finns i 3NF sönderdelas. Denna nedbrytning kommer att resultera i ytterligare kopplingsoperationer (eller kartesiska produkter) vid exekvering av frågor. Detta kommer att öka beräkningstiden. Å andra sidan skulle de tabeller som följer BCNF ha färre redundanser än tabeller som bara följer 3NF. Dessutom är det oftast möjligt att få en tabell som överensstämmer med 3NF utan att hindra bevarande av beroende och förlustfri sammanfogning. Men detta är inte alltid möjligt med BCNF.