3NF проти BCNF
Нормалізація - це процес, який здійснюється з метою мінімізації надмірностей, які присутні в даних у реляційних базах даних. Цей процес в основному розділить великі таблиці на менші таблиці з меншою кількістю надмірностей. Ці менші таблиці будуть пов'язані між собою через чітко визначені відносини. У добре нормалізованій базі даних будь-яка зміна або зміна даних потребуватиме зміни лише однієї таблиці. Третя нормальна форма (3NF) була введена в 1971 році Едгаром Ф. Коддом, який також є винахідником реляційної моделі та концепції нормалізації. Нормальна форма Бойса-Кодда (BCNF) була введена в 1974 році Коддом і Реймоном Ф. Бойсом.
Що таке 3NF?
3NF - третя нормальна форма, яка використовується при нормалізації реляційних баз даних. Відповідно до визначення Кодда, таблиця, як кажуть, міститься в 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.