3NF proti BCNF
Normalizacija je postopek, ki se izvaja za zmanjšanje odpuščanj, ki so prisotni v podatkih v relacijskih bazah podatkov. Ta postopek bo v glavnem razdelil velike tabele na manjše tabele z manj odpuščanj. Te manjše tabele bodo med seboj povezane z dobro opredeljenimi odnosi. V dobro normalizirani zbirki podatkov bo vsaka sprememba ali sprememba podatkov zahtevala spremembo le ene tabele. Tretjo normalno obliko (3NF) je leta 1971 uvedel Edgar F. Codd, ki je tudi izumitelj relacijskega modela in koncepta normalizacije. Normalno obliko Boyce-Codd (BCNF) sta leta 1974 uvedla Codd in Raymond F. Boyce.
Kaj je 3NF?
3NF je tretja normalna oblika, ki se uporablja pri normalizaciji relacijskih baz podatkov. Po Coddovi definiciji naj bi bila tabela v 3NF, če in samo če je ta tabela v drugi normalni obliki (2NF), vsak atribut v tabeli, ki ne spada v ključ kandidata, pa bi moral biti neposredno odvisen od vsak kandidatni ključ te tabele. Leta 1982 je Carlo Zaniolo podal drugačno izraženo definicijo za 3NF. Tabele, ki ustrezajo 3NF, na splošno ne vsebujejo nepravilnosti, ki se pojavijo pri vstavljanju, brisanju ali posodabljanju zapisov v tabelo.
Kaj je BCNF?
BCNF (znana tudi kot 3,5NF) je druga normalna oblika, ki se uporablja pri normalizaciji relacijskih baz podatkov. Uveden je bil za zajem nekaterih nepravilnosti, ki jih 3NF ne obravnava. Tabela naj bi bila v BCNF, če in samo, če je za vsako od odvisnosti oblike A → B, ki niso trivialne, A super-ključ. Razgraditev tabele, ki ni v običajni obliki BCNF, ne zagotavlja izdelave tabel v obliki BCNF (hkrati pa ohranite odvisnosti, ki so bile prisotne v prvotni tabeli).
Kakšna je razlika med 3NF in BCNF?
Tako 3NF kot BCNF sta običajni obliki, ki se uporabljata v relacijskih bazah podatkov za zmanjšanje odpuščanj v tabelah. V tabeli, ki je v običajni obliki BCNF, je za vsako ne trivialno funkcionalno odvisnost obrazca A → B A A super-ključ, medtem ko mora biti tabela, ki ustreza 3NF, v 2NF in vsaka, ki ni prime atribut mora biti neposredno odvisen od vsakega kandidatnega ključa te tabele. BCNF velja za močnejšo normalno obliko kot 3NF in je bil razvit za zajem nekaterih nepravilnosti, ki jih 3NF ni mogel zajeti. Če dobite tabelo, ki ustreza obrazcu BCNF, bo treba razstaviti tabelo, ki je v 3NF. Ta razgradnja bo povzročila dodatne operacije združevanja (ali kartezijanske izdelke) pri izvajanju poizvedb. To bo povečalo čas računanja. Po drugi strani bi imele tabele, ki ustrezajo BCNF, manj odpuščanj kot tabele, ki ustrezajo samo 3NF. Poleg tega je večino časa mogoče dobiti tabelo, ki ustreza 3NF, ne da bi pri tem ovirali ohranjanje odvisnosti in brez izgub. A to z BCNF ni vedno mogoče.