Нормальна форма Бойса-Кодда
Нормальна форма Бойса-Кодда (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 Відношення знаходиться в нормальній формі Бойса-Кодда (БКНФ) у тому і тільки в тому випадку, якщо кожний детермінант є можливим ключем.
Зауважимо, що якщо у відношенні є тільки один можливий ключ (який є первинним ключем), те це визначення стає еквівалентним визначенню третьої нормальної форми.
Очевидно, що ця вимога не виконана для відношення СПІВРОБІТНИКИ-ПРОЕКТИ. Можна зробити його декомпозицію до відношень СПІВРОБІТНИКИ і СПІВРОБІТНИКИ-ПРОЕКТИ:
СПІВРОБІТНИКИ (СПІВРОБІТНИКА НОМЕР, СПІВРОБІТНИКА ПРИЗВІЩЕ) .
Можливі ключі:
СПІВРОБІТНИКА НОМЕР
СПІВРОБІТНИКА ПРИЗВІЩЕ
СПІВРОБІТНИКА НОМЕР -> СПІВРОБІТНИКА ПРИЗВІЩЕ
СПІВРОБІТНИКА ПРИЗВІЩЕ -> СПІВРОБІТНИКА НОМЕР
СПІВРОБІТНИКИ-ПРОЕКТЫ (СПІВРОБІТНИКА НОМЕР,
ПРОЕКТУ НОМЕР, СПІВРОБІТНИКА ЗАВДАННЯ)
Можливий ключ:
СПІВРОБІТНИКА НОМЕР, ПРОЕКТУ НОМЕР
Функціональні залежності:
СПІВРОБІТНИКА НОМЕР, ПРОЕКТУ НОМЕР -> СПІВРОБІТНИКА ЗАВДАННЯ.
Можлива альтернативна декомпозиція, якщо вибрати за основу СПІВРОБІТНИКА ПРИЗВІЩЕ. У обох випадках отримані відношення СПІВРОБІТНИКИ і СПІВРОБІТНИКИ-ПРОЕКТИ знаходяться в БКНФ, і їм не властиві відзначені аномалії.