Отношение R находится нормальной форме Бойса – Кодда (НФБК) в том и только в том случае, если каждый его детерминант является возможным ключом.
Проблема нормальной формы Бойса – Кодда может возникнуть только тогда, когда в отношении имеется несколько возможных ключей, эти ключи являются составными и пересекающимися (т.е. имеют общие атрибуты). Если в отношении имеется только один возможный ключ (являющийся первичным ключом), то это определение становится эквивалентным определению третьей нормальной формы. Таким образом, нормальная форма Бойса – Кодда представляет собой усиленную третью нормальную форму.
Пример. Имеем отношение с именем СОТРУДНИК и атрибутами НОМЕР СОТРУДНИКА, ФАМИЛИЯ, НОМЕР ПРОЕКТА, ЗАДАНИЕ НА ПРОЕКТ.
Пусть предметная область такова, что личность сотрудника однозначно определяется и его номером (атрибут НОМЕР СОТРУДНИКА), и его фамилией (атрибут ФАМИЛИЯ). Каждый сотрудник работает только над одним проектом, а каждый проект закреплен только за одним конкретным сотрудником. Для каждого сотрудника для реализации проекта выдается конкретное задание. Исходя из приведенного описания предметной области, данное отношение имеет два возможных составных ключа:
Сотрудник.(Номер сотрудника + Номер проекта)
Сотрудник.(Фамилия + Номер проекта)
т.е. имеются следующие функциональные зависимости:
Сотрудник.Номер сотрудника ® Сотрудник.Фамилия
Сотрудник.Фамилия ® Сотрудник.Номер сотрудника
Сотрудник.Номер сотрудника ® Сотрудник.Номер проекта
Сотрудник.Фамилия ® Сотрудник.Номер проекта
Сотрудник.(Номер сотрудника + Номер проекта) ® Сотрудник.Задание на проект
Сотрудник.(Фамилия + Номер проекта) ® Сотрудник.Задание на проект
Независимо от того, какой из возможных ключей выбран в качестве первичного ключа, это отношение находится в 3НФ. Однако так как имеются функциональные зависимости атрибутов отношения от атрибута, являющегося частью первичного ключа, данное отношение не удовлетворяет условию нормальной формы Бойса – Кодда. Нормализация отношения СОТРУДНИК основывается на теореме Хеза и заключается в его декомпозиции на два отношения:
Сотрудник1 (Номер сотрудника, Фамилия)
Сотрудник2 (Номер сотрудника, Номер проекта, Задание на проект)
Для отношения СОТРУДНИК1 возможными ключами являются следующие атрибуты:
Сотрудник1.Номер сотрудника
Сотрудник1.Фамилия
Для отношения СОТРУДНИК2 возможный ключ один, и он является составным:
Сотрудник2.(Номер сотрудника + Номер проекта)
Для этих отношений имеются следующие функциональные зависимости между информационными единицами:
.Номер сотрудника ® Сотрудник1.Фамилия
Сотрудник1.Фамилия ® Сотрудник1.Номер сотрудника
Сотрудник2.(Номер сотрудника + Номер проекта) ® Сотрудник. Задание на проект
Полученные отношения находятся в НФБК.
Для данного примера возможна следующая альтернативная декомпозиция отношения СОТРУДНИК:
Сотрудник1 (Номер сотрудника, Фамилия)
Сотрудник2 (Фамилия, Номер проекта, Задание на проект)
В этом случае полученные отношения также удовлетворяют условию НФБК.