Давайте обговоримо відмінності між 3NF і BCNF за допомогою діаграми порівняння, показаної нижче.
Діаграма порівняння
Основа для порівняння | 3NF | BCNF |
---|---|---|
Концепція | Жоден атрибут non-prime не повинен бути транзитивно залежним від ключа кандидата. | Для будь-якої тривіальної залежності у відношенні R кажуть, що X-> Y, X має бути супер-ключем відношення R. |
Залежність | 3NF може бути отриманий без шкоди для всіх залежностей. | Залежність не може бути збережена в BCNF. |
Розкладання | Розкладання без втрат може бути досягнуто в 3NF. | Розкладання без втрат у БЦНФ важко досягти. |
Визначення 3NF
Таблиця або відношення вважається в третій звичайній формі, тільки якщо таблиця вже знаходиться в 2NF і не існує непростого атрибута транзитивно залежного від ключа кандидата відношення.
Тому, перш ніж я звернуся до процесу нормалізації таблиці в 3NF, дозвольте мені обговорити кандидатський ключ. Ключ-кандидат - це мінімальний супер ключ, тобто супер-ключ з мінімальними атрибутами, які можуть визначати всі атрибути відношення. Отже, в процесі нормалізації вашої таблиці, спочатку ви розпізнаєте кандидат-ключ даного відношення. Атрибути, які є частиною ключа-кандидата, є простими атрибутами, а атрибути, які не є частиною ключа-кандидата, є непростими атрибутами .
Тепер, якщо ми маємо відношення R (A, B, C, D, E, F) і маємо наступні залежності функції для відношення R.
Таблиця знаходиться в 2NF, оскільки не атрибут non-prime частково залежить від ключа-кандидата
Але транзитивна залежність спостерігається серед наданих функціональних залежностей, оскільки атрибут F не залежить безпосередньо від ключа AB кандидата. Замість цього, атрибут F транзитивно залежить від кандидатної клавіші AB через атрибут D. До атрибуту D є деяке значення, яке ми можемо досягти до значення атрибуту F, з кандидатного ключа AB. У випадку, якщо значення атрибута D є NULL, ми ніколи не можемо знайти / шукати значення F за допомогою кандидатного ключа AB. Це є причиною, чому 3NF вимагає усунути транзитивну залежність від відносин.
Отже, щоб вилучити цю транзитивну залежність, нам потрібно розділити відношення R. Під час поділу відношення завжди розміщуйте ключ-кандидат і всі атрибути, які залежать від ключа-кандидата в першому відношенні. У наступному розділеному відношенні ми розмістимо атрибут, який викликає транзитивну залежність, а також атрибути, які залежать від нього у другому відношенні.
Визначення BCNF
BCNF вважається більш сильним, ніж 3NF. Відношення R до BCNF має бути в 3NF . І там, де нетривіальна функціональна залежність A -> B виконується у відношенні R, то A повинна бути суперкупом відношення R. Як ми знаємо, Super key є ключем, який має єдиний атрибут або набір атрибутів, що визначає весь атрибути відносини.
Тепер давайте перейдемо до прикладу для кращого розуміння BCNF. Припустимо, маємо відношення R (A, B, C, D, F), які мають наступні функціональні залежності.
Але одна функціональна залежність, тобто D -> F, порушує визначення BCNF, згідно з яким, якщо D -> F існує, то D має бути супер-ключем, що не є тут випадком. Отже, розділимо відношення R.
Ключові відмінності між 3NF і BCNF
- 3NF стверджує, що жоден атрибут non-prime не повинен бути транзитивно залежним від ключа кандидата відношення. З іншого боку, BCNF стверджує, що якщо тривіальна функціональна залежність X -> Y існує для відношення; тоді X має бути супер-ключем.
- 3NF може бути отриманий без шкоди для залежності. Однак залежність не може бути збережена при отриманні BCNF.
- 3NF може бути досягнута без втрати будь-якої інформації зі старої таблиці, тоді як при отриманні BCNF ми можемо втратити деяку інформацію зі старої таблиці.
Висновок:
BCNF є значно обмежувальним, ніж 3NF, що допомагає нормалізувати таблицю більше. Відношення в 3NF має мінімальну залишкову залишковість, яка далі видаляється BCNF.