3NF vs BCNF
Normalizace je proces, který se provádí za účelem minimalizace propouštění, které jsou přítomny v datech v relačních databázích. Tento proces rozdělí hlavně velké tabulky na menší tabulky s menším počtem propouštění. Tyto menší tabulky budou vzájemně propojeny prostřednictvím dobře definovaných vztahů. V dobře normalizované databázi bude každá změna nebo úprava dat vyžadovat úpravu pouze jedné tabulky. Třetí normální formu (3NF) představil v roce 1971 Edgar F. Codd, který je také vynálezcem relačního modelu a pojmu normalizace. Boyce-Codd Normal Form (BCNF) byl představen v roce 1974 Coddem a Raymondem F. Boycem.
Co je to 3NF?
3NF je třetí normální forma používaná při normalizaci relační databáze. Podle definice Codd se uvádí, že tabulka je ve 3NF, pokud a pouze tehdy, je-li tato tabulka ve druhé normální formě (2NF), a každý atribut v tabulce, který nepatří do kandidátního klíče, by měl přímo záviset na každý kandidátský klíč této tabulky. V roce 1982 Carlo Zaniolo vytvořil odlišně vyjádřenou definici pro 3NF. Tabulky, které jsou v souladu s 3NF, obecně neobsahují anomálie, ke kterým dochází při vkládání, mazání nebo aktualizaci záznamů v tabulce..
Co je BCNF?
BCNF (také známý jako 3.5NF) je další normální forma používaná při normalizaci relační databáze. To bylo představeno zachytit některé anomálie, které nejsou řešeny 3NF. Tabulka se říká, že je v BCNF, a to pouze tehdy, pokud je pro každou závislost formy A → B, která není triviální, A superklíč. Rozklad tabulky, která není v normální podobě BCNF, nezaručuje výrobu tabulek ve formě BCNF (při zachování závislostí, které byly v původní tabulce).
Jaký je rozdíl mezi 3NF a BCNF?
3NF i BCNF jsou normální formy, které se používají v relačních databázích k minimalizaci redundancí v tabulkách. V tabulce, která je v normální podobě BCNF, je pro každou netriviální funkční závislost formy A → B superklíč, zatímco tabulka, která vyhovuje 3NF, by měla být v 2NF a každá nepředvídatelná funkce Atribut by měl přímo záviset na každém kandidátském klíči tabulky. BCNF je považován za silnější normální formu než 3NF a byl vyvinut k zachycení některých anomálií, které 3NF nemohly zachytit. Získání tabulky, která vyhovuje formuláři BCNF, bude vyžadovat rozklad tabulky, která je ve 3NF. Tento rozklad bude mít za následek další operace spojení (nebo kartézské produkty) při provádění dotazů. To zvýší výpočetní čas. Na druhé straně by tabulky, které vyhovují BCNF, měly méně propouštění než tabulky, které vyhovují pouze 3NF. Kromě toho je většinou možné získat tabulku, která vyhovuje 3NF, aniž by bránila zachování závislosti a bezeztrátovému spojení. U BCNF to však není vždy možné.