Нормальна форма Бойса-Кодда

Матеріал з Фізмат Вікіпедії
Перейти до: навігація, пошук

Нормальна форма Бойса-Кодда (BCNF) - це нормальна форма, яка є модифікацією третій нормальній формі, і при цьому відсутні функціональні залежності атрибутів (полів) первинного ключа від не-ключових атрибутів. Таблиця може перебувати в 3NF, але не в BCNF, тільки в одному випадку: якщо вона має, крім первинного ключа, ще принаймні один складений можливий ключ, і принаймні один з атрибутів таблиці входить й у первинний, і в можливий ключі. Таке буває досить рідко, в іншому 3NF й BCNF еквівалентні.


Застосовування

Нормальна форма Бойса-Кодда вимагає, щоб в таблиці був тільки один потенційний первинний ключ. Найчастіше у таблиць, що знаходяться в третій нормальній формі, так і буває, але не завжди. Якщо виявився другий стовпець (комбінація стовпців), що дозволяє однозначно ідентифікувати рядок, то для приведення до нормальної форми Бойса-Кодда такі дані треба винести в окрему таблицю. Для приведення таблиці, що знаходиться в нормальній формі Бойса-Кодда, до четвертої нормальної форми необхідно усунути наявні в ній багатозначні залежності. Тобто забезпечити, щоб вставка / видалення будь-якого рядка таблиці не вимагала б вставки / видалення / модифікації інших рядків цієї ж таблиці.


Приклад

Вихідна таблиця:

Номер клієнта Дата співбесіди Время співбесіди Номер кімнати Номер працівника
С345 13.10.03 13.00 103 А138
С355 13.10.03 13.05 103 А136
С368 13.09.03 13.00 102 А154
С366 13.09.03 13.30 105 А207

В результаті нормальна форма Бойса-Кодда має вигляд:

Номер клієнта Дата співбесіди Время співбесіди Номер працівника
С345 13.10.03 13.00 А138
С355 13.10.03 13.05 А136
С368 13.09.03 13.00 А154
С366 13.09.03 13.30 А207
Дата співбесіди Номер працівника Номер кімнати
13.10.03 А138 103
13.10.03 А136 103
13.09.03 А154 102
13.09.03 А207 105

Приклад 2 Відношення знаходиться в нормальній формі Бойса-Кодда (БКНФ) у тому і тільки в тому випадку, якщо кожний детермінант є можливим ключем.

Зауважимо, що якщо у відношенні є тільки один можливий ключ (який є первинним ключем), те це визначення стає еквівалентним визначенню третьої нормальної форми.

Очевидно, що ця вимога не виконана для відношення СПІВРОБІТНИКИ-ПРОЕКТИ. Можна зробити його декомпозицію до відношень СПІВРОБІТНИКИ і СПІВРОБІТНИКИ-ПРОЕКТИ:

СПІВРОБІТНИКИ (СПІВРОБІТНИКА НОМЕР, СПІВРОБІТНИКА ПРИЗВІЩЕ) .

Можливі ключі:

СПІВРОБІТНИКА НОМЕР

СПІВРОБІТНИКА ПРИЗВІЩЕ

Функціональні залежності:

СПІВРОБІТНИКА НОМЕР -> СПІВРОБІТНИКА ПРИЗВІЩЕ

СПІВРОБІТНИКА ПРИЗВІЩЕ -> СПІВРОБІТНИКА НОМЕР

СПІВРОБІТНИКИ-ПРОЕКТЫ (СПІВРОБІТНИКА НОМЕР,

ПРОЕКТУ НОМЕР, СПІВРОБІТНИКА ЗАВДАННЯ)

Можливий ключ:

СПІВРОБІТНИКА НОМЕР, ПРОЕКТУ НОМЕР

Функціональні залежності:

СПІВРОБІТНИКА НОМЕР, ПРОЕКТУ НОМЕР -> СПІВРОБІТНИКА ЗАВДАННЯ.

Можлива альтернативна декомпозиція, якщо вибрати за основу СПІВРОБІТНИКА ПРИЗВІЩЕ. У обох випадках отримані відношення СПІВРОБІТНИКИ і СПІВРОБІТНИКИ-ПРОЕКТИ знаходяться в БКНФ, і їм не властиві відзначені аномалії.


Корисні посилання

Нормалізація
Бази даних


Джерела

Сервер електронних курсів
Побудова інформаційної моделі