3NF vs BCNF
Normalisering är en process som utförs för att minimera de redundans som finns i data i relationsdatabaser. Denna process kommer huvudsakligen att dela upp stora tabeller i mindre tabeller med färre uppsägningar. Dessa mindre tabeller kommer att relateras till varandra genom väldefinierade relationer. I en väl normaliserad databas behöver en ändring eller modifiering av data kräva modifiering av ett enda bord. Tredje normala formuläret (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 normala formen som används i relationell databas normalisering. Enligt Codds definition sägs en tabell vara i 3NF, om och endast om det bordet är i den andra normala formen (2NF), och varje attribut i tabellen som inte hör till en kandidatnyckel bör direkt bero på varje kandidatnyckel i den tabellen. År 1982 producerade Carlo Zaniolo en annorlunda uttryckt definition för 3NF. Tabeller som överensstämmer med 3NF innehåller vanligtvis inte anomalier som uppstår när du lägger in, 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 relationell databas normalisering. Det introducerades för att fånga några avvikelser som inte behandlas av 3NF. En tabell sägs vara i BCNF, om och endast om A är en supernyckel för var och en av beroenden av formen A → B som är icke-trivial. Nedbrytning av ett bord som inte finns i den normala BCNF-modellen garanterar inte att tabeller framställs i BCNF-formuläret (samtidigt som de beroenden som var närvarande i originalbordet 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 redundans i tabeller. I ett bord som finns i den normala BCNF-formen är A för alla icke-triviala funktionella beroende av formen A → B, en supernyckel, medan ett bord som överensstämmer med 3NF borde vara i 2NF och varje icke-prime Attributet bör direkt bero på varje kandidatnyckel i den tabellen. BCNF anses vara en starkare normal form än 3NF och den utvecklades för att fånga några av de anomalier som inte kunde fångas av 3NF. Att få ett bord som uppfyller BCNF-formuläret kommer att behöva sönderdela ett bord som finns i 3NF. Denna sönderdelning kommer att leda till ytterligare anslutningsoperationer (eller kartesiska produkter) när du utför frågor. Detta ökar beräkningstiden. Å andra sidan skulle de tabeller som uppfyller BCNF ha färre uppsägningar än tabeller som endast överensstämmer med 3NF. Dessutom är det oftast möjligt att erhålla ett bord som överensstämmer med 3NF utan att hindra beroendebehållande och förlustfri anslutning. Men det här är inte alltid möjligt med BCNF.