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

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
Основная статья: Нормальная форма

Нормальная форма Бойса — Кодда (BCNF) — одна из возможных нормальных форм таблицы реляционной базы данных. Это модификация третьей нормальной формы (в некоторых источниках[источник не указан 1971 день] именно 3NF называется формой Бойса-Кодда). Названа в честь Рэя Бойса и Эдгара Кодда.

Определение

Отношение находится в 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

Второй пример

Предположим, создаётся таблица бронирования для теннисных кортов на день: {Номер корта, Время начала, Время окончания, Тариф, Член клуба}. Тариф зависит от выбранного корта и членства в клубе.

Таким образом, возможны следующие составные первичные ключи: {Номер корта, Время начала}, {Номер корта, Время окончания}, {Тариф, Время начала}, {Тариф, Время окончания}.

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

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

Можно улучшить структуру, разбив таблицу на две: {Номер корта, Время начала, Время окончания, Член клуба} и {Тариф, Номер корта, Член клуба}. Данное отношение будет соответствовать BCNF.

de:Normalisierung (Datenbank)#Boyce-Codd-Normalform (BCNF)

en:Boyce-Codd normal form es:Forma normal de Boyce-Codd sr:Бојс-Кодова нормална форма

Личные инструменты

Served in 0.120 secs.