3NF срещу BCNF
Нормализацията е процес, който се извършва, за да се сведат до минимум излишъците, които присъстват в данните в релационни бази данни. Този процес основно ще разделя големите таблици на по-малки с по-малко излишъци. Тези по-малки таблици ще бъдат свързани една с друга чрез добре дефинирани връзки. В една добре нормализирана база данни, всяка промяна или модификация на данни ще изисква модифициране само на една таблица. Третата нормална форма (3NF) е въведена през 1971 г. от Едгар Ф. Код, който е и изобретателят на релационния модел и концепцията за нормализация. Нормалната форма на Бойс-Код (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.