3NF vs BCNF
Normalizácia je proces, ktorý sa vykonáva s cieľom minimalizovať redundancie, ktoré sú prítomné v údajoch v relačných databázach. Tento proces rozdelí hlavne veľké tabuľky na menšie tabuľky s menším počtom prebytočných miest. Tieto menšie tabuľky budú navzájom prepojené prostredníctvom dobre definovaných vzťahov. V dobre normalizovanej databáze bude akákoľvek zmena alebo úprava údajov vyžadovať úpravu iba jednej tabuľky. Tretia normálna forma (3NF) bola predstavená v roku 1971 Edgarom F. Coddom, ktorý je tiež vynálezcom relačného modelu a konceptu normalizácie. Normálna forma Boyce-Codd (BCNF) bola predstavená v roku 1974 Coddom a Raymondom F. Boyce.
Čo je 3NF?
3NF je tretia normálna forma používaná pri normalizácii relačnej databázy. Podľa Coddovej definície sa tabuľka nachádza v 3NF vtedy a len vtedy, ak je táto tabuľka v druhej normálnej forme (2NF) a každý atribút v tabuľke, ktorý nepatrí do kandidátskeho kľúča, by mal priamo závisieť od každý kandidátsky kľúč tejto tabuľky. V roku 1982 Carlo Zaniolo vytvoril odlišne vyjadrenú definíciu 3NF. Tabuľky, ktoré sú v súlade s 3NF, vo všeobecnosti neobsahujú anomálie, ktoré sa vyskytujú pri vkladaní, odstraňovaní alebo aktualizácii záznamov v tabuľke.
Čo je BCNF?
BCNF (tiež známy ako 3.5NF) je ďalšia normálna forma používaná pri normalizácii relačnej databázy. Bol zavedený s cieľom zachytiť niektoré anomálie, ktoré 3NF nerieši. O tabuľke sa hovorí, že je v BCNF vtedy a len vtedy, ak pre každú zo závislostí formy A → B, ktoré sú netriviálne, A je superkľúč. Rozloženie tabuľky, ktorá nie je v normálnej forme BCNF, nezaručuje vytvorenie tabuliek vo forme BCNF (pri zachovaní závislostí, ktoré boli prítomné v pôvodnej tabuľke).
Aký je rozdiel medzi 3NF a BCNF?
3NF aj BCNF sú normálne formy, ktoré sa používajú v relačných databázach na minimalizáciu redundancií v tabuľkách. V tabuľke, ktorá je v normálnej forme BCNF, pre každú netriviálnu funkčnú závislosť formy A → B je A superkľúčom, zatiaľ čo tabuľka, ktorá je v súlade s 3NF, by mala byť v 2NF a každá neprvotriedna atribút by mal priamo závisieť od každého kandidátskeho kľúča tejto tabuľky. BCNF sa považuje za silnejšiu normálnu formu ako 3NF a bol vyvinutý na zachytenie niektorých anomálií, ktoré 3NF nedokázal zachytiť. Získanie tabuľky, ktorá je v súlade s formulárom BCNF, bude vyžadovať rozloženie tabuľky, ktorá je v 3NF. Tento rozklad bude mať za následok ďalšie operácie spojenia (alebo karteziánske produkty) pri vykonávaní dotazov. Tým sa zvýši výpočtový čas. Na druhej strane tabuľky, ktoré sú v súlade s BCNF, by mali menej redundancií ako tabuľky, ktoré sú v súlade len s 3NF. Okrem toho je väčšinou možné získať stôl, ktorý vyhovuje 3NF, bez toho, aby to bránilo zachovaniu závislosti a bezstratovému spájaniu. Ale to nie je vždy možné s BCNF.