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

 

Пусть в определенном выше отношении SP присутствует еще и имя поставщика Sname. Будем для удобства считать, что имя однозначно определяет поставщика. Тогда в отношении SP (Sn, Sname, Pn, Q) единственным неключевым атрибутом является Q. Имеются два возможных ключа

· Sn, Pn;

· Sname, Pn.

При изменении имени поставщика Sname должны корректироваться все записи, связанные с этим поставщиком.

Определим детерминантотношения как набор атрибутов, от которого функционально полно зависит какой-либо другой атрибут.

Отношение R находится в НФ Бойса-Кодда (НФБК), если каждый детерминант является возможным ключем отношения.

Приведение к НФБК также подразумевает декомпозицию таблицы. В приведенном примере разумно выделить атрибуты Sn и Sname в отдельное отношение S3 (Sn, Sname), оставив в прежнем виде отношение SP (Sn, Pn, Q).

Заметим, что отношение R, находящееся в НФБК, находится также во второй и третьей НФ.

Приведение к НФБК может вызвать помимо достоинств и некоторые аномалии. Рассмотрим отношение R (City, Adr, Ind), содержащее сведения о почтовых адресах. Здесь City – название города, Adr - адрес без указания города, Ind – шестизначный почтовый индекс. Как известно, в городе каждое почтовое отделение имеет свой индекс.

В отношении R нет неключевых атрибутов, поэтому оно находится во второй и третьей НФ. Возможными ключами являются сочетания City, Adr или Adr, Ind. Имеются функциональные зависимости

· City, Adr → Ind;

· Ind → City.

Атрибут Ind является детерминантом для атрибута City, но не является возможным ключом, поэтому отношение R не находится в НФБК. Одним из вариантов декомпозиции является представление информации в двух отношениях R1 (Ind, City) с ключом Ind и R2 (Ind, Adr) с обоими ключевыми атрибутами.

Пусть требуется по заданным значениям атрибутов City и Adr определить Ind. Адресу может соответствовать множество индексов разных городов, поэтому придется для каждого индекса определять город и сравнивать его с тем, который требуется. Таким образом, после декомпозиции потеряна функциональная связь City, Adr → Ind. Другие варианты разложения отношения R приводят к аналогичным проблемам.