Основы проектирования реляционных баз данных


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


3НФ упрощает решение проблем контроля избыточности данных, интерпретации нуль-значений, контроля за операциями модификации данных, только если в отношениях отсутствуют какие-либо другие ФЗ, в частности обратные ФЗ неключевого атрибута на один из атрибутов составного первичного ключа или многозначные ФЗ. В противном случае вышеперечисленные проблемы остаются неразрешенными. Для устранения таких проблем, связанных с существованием обратных ФЗ неключевых атрибутов на часть составного ключа, была предложена усиленная 3НФ или НФ Бойса-Кодда.

Отношение находится в нормальной форме Бойса-Кодда (НФБК), если оно находится в 3НФ, и в нем отсутствовали зависимости ключевых атрибутов от неключевых атрибутов. Иными словами, НФБК допускает наличие только таких нетривиальных ФЗ, в которых ключ определяет один или более других атрибутов:

, где
включает некоторый ключ.

Таким образом, схема отношения в НФБК обладает теми же достоинствами, что и схема в 3НФ, но устраняет некоторые дополнительные аномалии, не устраняемые 3НФ. Например, в отношение (Город, Адрес, Почтовый_индекс), находящееся в 3НФ, невозможно записать кортеж для города с известным почтовым индексом, если не известен адрес с этим почтовым индексом. Данное отношение не находится в НФБК, так как имеет место ФЗ Почтовый_индекс

Город, а атрибут почтовый_индекс не является ключом этого отношения.

Замечание. В отличие от 3НФ, исходные отношения не всегда могут быть приведены в НФБК. Пример. Приведение отношения к НФБК

Продолжим рассмотрение примеров из области судоходства.

Допустим, что экипаж судна разделен на команды, каждая из которых отвечает за разные виды работ. Члены экипажа могут входить в разные команды, но в каждую команду входит только один руководитель. Команда может иметь несколько руководителей. Каждый член экипажа может руководить только одной командой. Отношение задается таблицей 6.1 ниже:

Таблица 6.1. Отношение КОМАНДА

Член экипажакомандаРуководитель
ИвановНаблюдениеПрохоров
ИвановПитаниеМакаров
ПетровНаблюдениеЛеонтьев
МодинНаблюдениеПрохоров
ВасинПитаниеЛазарев
ФроловОбслуживаниеСидоров
ИвлевОбслуживаниеСидоров


Отношение находится в 3НФ, однако содержит аномалию удаления. Если Петрова удалить из команды наблюдения, то будет потеряна информация о том, что Леонтьев является руководителем команды наблюдения, и при назначении нового члена экипажа в команду наблюдения не будет известно, что у нее есть еще один руководитель, кроме Прохорова.

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

Таблица 6.2. Отношение РУКОВОДИТЕЛЬ_КОМАНДЫКомандаРуководитель
НаблюдениеПрохоров
ПитаниеМакаров
НаблюдениеЛеонтьев
ПитаниеЛазарев
ОбслуживаниеСидоров
Результат приведения отношения КОМАНДА к НФБК представлен на рис. 6.5.


Рис. 6.5.  Отношение в НФБК


Содержание раздела