3NF срещу BCNF

Нормализирането е процес, който се осъществява с цел минимизиране на съкращенията, присъстващи в данните в релационни бази данни. Този процес главно ще раздели големи таблици на по-малки таблици с по-малко съкращения. Тези по-малки таблици ще бъдат свързани помежду си чрез добре дефинирани взаимоотношения. В добре нормализирана база данни, всяка промяна или промяна в данните ще изисква промяна само на една таблица. Третата нормална форма (3NF) е въведена през 1971 г. от Едгар Ф. Код, който е също изобретател на релационния модел и концепцията за нормализация. Нормална форма на Boyce-Codd (BCNF) е въведена през 1974 г. от Код и Реймънд Ф. Бойс.

Какво е 3NF?

3NF е третата нормална форма, използвана при нормализиране на релационни бази данни. Според дефиницията на Codd се казва, че таблицата е в 3NF, ако и само ако тази таблица е във втората нормална форма (2NF), а всеки атрибут в таблицата, който не принадлежи на кандидат-ключ, трябва да зависи пряко от всеки кандидат ключ от тази таблица. През 1982 г. Карло Заниоло даде различно изразено определение за 3NF. Таблиците, които съответстват на 3NF, обикновено не съдържат аномалии, които се появяват при вмъкване, изтриване или актуализиране на записи в таблицата.

Какво е BCNF?

BCNF (известен също като 3.5NF) е друга нормална форма, използвана при нормализиране на релационни бази данни. Той беше въведен за улавяне на някои аномалии, които не са адресирани от 3NF. Казва се таблица в BCNF, ако и само ако, за всяка от зависимостите на формата A → B, които са нетривиални, A е супер ключ. Декомпозирането на таблица, която не е в нормалната форма на BCNF, не гарантира производството на таблици във формата на BCNF (при запазване на зависимостите, които са били в оригиналната таблица).

Каква е разликата между 3NF и BCNF?

И 3NF, и BCNF са нормални форми, които се използват в релационни бази данни, за да се сведе до минимум съкращенията в таблици. В таблица, която е в нормалната форма на BCNF, за всяка нетривиална функционална зависимост на формата A → B, A е супер ключ, докато таблицата, която отговаря на 3NF, трябва да бъде в 2NF, и всеки не-премиер атрибут трябва директно да зависи от всеки кандидат ключ от тази таблица. BCNF се счита за по-силна нормална форма от 3NF и е разработена за улавяне на някои от аномалиите, които не могат да бъдат уловени от 3NF. Получаването на таблица, която съответства на BCNF формата, ще изисква декомпозиране на таблица, която е в 3NF. Това разлагане ще доведе до допълнителни операции за присъединяване (или декартови продукти) при изпълнение на заявки. Това ще увеличи изчислителното време. От друга страна, таблиците, които съответстват на BCNF, биха имали по-малко съкращения от таблиците, които отговарят само на 3NF. Освен това, през повечето време е възможно да се получи таблица, която да отговаря на 3NF, без да се възпрепятства запазването на зависимостта и присъединяването без загуби. Но това не винаги е възможно с BCNF.