Рекомендуємо, 2024

Вибір Редакції

Різниця між 3NF і BCNF

Нормалізація - це метод, який видаляє надмірність з відношення, тим самим мінімізуючи аномалії вставки, видалення та оновлення, які погіршують продуктивність баз даних. У цій статті ми будемо диференціювати два вищих нормальних форми, тобто 3NF і BCNF. Основна відмінність між 3NF і BCNF полягає в тому, що 3NF усуває транзитивну залежність від відношення і таблицю в BCNF, тривіальна функціональна залежність X-> Y в відношенні повинна зберігатися, тільки якщо X є супер-ключем.

Давайте обговоримо відмінності між 3NF і BCNF за допомогою діаграми порівняння, показаної нижче.

Діаграма порівняння

Основа для порівняння3NFBCNF
КонцепціяЖоден атрибут non-prime не повинен бути транзитивно залежним від ключа кандидата.Для будь-якої тривіальної залежності у відношенні R кажуть, що X-> Y, X має бути супер-ключем відношення R.
Залежність3NF може бути отриманий без шкоди для всіх залежностей.Залежність не може бути збережена в BCNF.
РозкладанняРозкладання без втрат може бути досягнуто в 3NF.Розкладання без втрат у БЦНФ важко досягти.

Визначення 3NF

Таблиця або відношення вважається в третій звичайній формі, тільки якщо таблиця вже знаходиться в 2NF і не існує непростого атрибута транзитивно залежного від ключа кандидата відношення.

Тому, перш ніж я звернуся до процесу нормалізації таблиці в 3NF, дозвольте мені обговорити кандидатський ключ. Ключ-кандидат - це мінімальний супер ключ, тобто супер-ключ з мінімальними атрибутами, які можуть визначати всі атрибути відношення. Отже, в процесі нормалізації вашої таблиці, спочатку ви розпізнаєте кандидат-ключ даного відношення. Атрибути, які є частиною ключа-кандидата, є простими атрибутами, а атрибути, які не є частиною ключа-кандидата, є непростими атрибутами .

Тепер, якщо ми маємо відношення R (A, B, C, D, E, F) і маємо наступні залежності функції для відношення R.

Спостерігаючи за функціональними залежностями, можна зробити висновок, що AB є кандидатним ключем для відношення R, оскільки за допомогою ключа AB можна шукати значення для всіх атрибутів у відношенні R. Отже, A, B стає простими атрибутами, оскільки вони разом роблять кандидатний ключ. Атрибути C, D, E, F стають непростими атрибутами, оскільки жоден з них не є частиною ключа-кандидата.

Таблиця знаходиться в 2NF, оскільки не атрибут non-prime частково залежить від ключа-кандидата

Але транзитивна залежність спостерігається серед наданих функціональних залежностей, оскільки атрибут F не залежить безпосередньо від ключа AB кандидата. Замість цього, атрибут F транзитивно залежить від кандидатної клавіші AB через атрибут D. До атрибуту D є деяке значення, яке ми можемо досягти до значення атрибуту F, з кандидатного ключа AB. У випадку, якщо значення атрибута D є NULL, ми ніколи не можемо знайти / шукати значення F за допомогою кандидатного ключа AB. Це є причиною, чому 3NF вимагає усунути транзитивну залежність від відносин.

Отже, щоб вилучити цю транзитивну залежність, нам потрібно розділити відношення R. Під час поділу відношення завжди розміщуйте ключ-кандидат і всі атрибути, які залежать від ключа-кандидата в першому відношенні. У наступному розділеному відношенні ми розмістимо атрибут, який викликає транзитивну залежність, а також атрибути, які залежать від нього у другому відношенні.

Тепер таблиці R1 і R2 знаходяться в 3NF, оскільки він не має часткових і транзитивних залежностей. Відношення R1 (A, B, C, D, E) має кандидатну клавішу AB, тоді як відношення R2 (D, E) має D в якості свого кандидатного ключа.

Визначення BCNF

BCNF вважається більш сильним, ніж 3NF. Відношення R до BCNF має бути в 3NF . І там, де нетривіальна функціональна залежність A -> B виконується у відношенні R, то A повинна бути суперкупом відношення R. Як ми знаємо, Super key є ключем, який має єдиний атрибут або набір атрибутів, що визначає весь атрибути відносини.

Тепер давайте перейдемо до прикладу для кращого розуміння BCNF. Припустимо, маємо відношення R (A, B, C, D, F), які мають наступні функціональні залежності.

Спостерігаючи відношення R, можна сказати, що A і BF є кандидатними ключами відношення R, оскільки вони самі можуть шукати значення для всіх атрибутів у співвідношенні R. Отже, A, B, F - первинні атрибути, тоді як C і D є непростими атрибутами. В наведених вище функціональних залежностях не спостерігається транзитивної залежності. Отже, таблиця R знаходиться в 3NF.

Але одна функціональна залежність, тобто D -> F, порушує визначення BCNF, згідно з яким, якщо D -> F існує, то D має бути супер-ключем, що не є тут випадком. Отже, розділимо відношення R.

Тепер таблиці R1 nd R2 знаходяться в BCNF. Відношення R1 має два кандидатних клавіші A і B, тривіальна функціональна залежність R1, тобто A-> BCD і B -> ACD, утримують для BCNF як A і B - супер-ключі для зв'язку. Відношення R2 має D як його кандидатний ключ, а функціональна залежність D -> F також застосовується для BCNF, оскільки D - Super Key.

Ключові відмінності між 3NF і BCNF

  1. 3NF стверджує, що жоден атрибут non-prime не повинен бути транзитивно залежним від ключа кандидата відношення. З іншого боку, BCNF стверджує, що якщо тривіальна функціональна залежність X -> Y існує для відношення; тоді X має бути супер-ключем.
  2. 3NF може бути отриманий без шкоди для залежності. Однак залежність не може бути збережена при отриманні BCNF.
  3. 3NF може бути досягнута без втрати будь-якої інформації зі старої таблиці, тоді як при отриманні BCNF ми можемо втратити деяку інформацію зі старої таблиці.

Висновок:

BCNF є значно обмежувальним, ніж 3NF, що допомагає нормалізувати таблицю більше. Відношення в 3NF має мінімальну залишкову залишковість, яка далі видаляється BCNF.

Top