244
использовать четвертую и пятую нормальные формы, а вот проектировщики
должны знать, какие проблемы эти формы решают. Эти проблемы –
неизбежный результат применения составных первичных ключей, в которых
лишь часть ключа сама по себе содержит информацию. Любая структура,
находящаяся в ЗНФ и не имеющая составных ключей, должна также
находиться в 5НФ.
НФБК
Нормальная форма Бойса-Кодда устанавливает дополнительное правило:
все транзитивные зависимости должны быть удалены. Таблица R находится в
нормальной форме Бойса-Кодда, если для каждой нетривиальной ФЗХ -> AX –
суперключ. Что это означает на практике?
Продолжая мореходную тему, предположим, что экипаж судна разделен
на группы, отвечающие за разные виды работ. Член экипажа может входить в
несколько групп, но в каждую группу входит только один руководитель.
Группа, в свою очередь, может иметь несколько руководителей. Кроме того,
член экипажа может руководить только одной группой. Это очень сложный
сценарий. Табл. 9, представленная ниже, находится в третьей нормальной
форме, но противоречит НФБК.
Таблица 9
Распределение экипажа: таблица в ЗНФ, противоречащая НФБК
Член экипажа Название группы Фамилия
руководителя
Джоуор Наблюдение Уэбб
Джоуор Питание Кауи
Уэллс Наблюдение Реймуол
Купер Наблюдение Уэбб
Дерхэм Питание Хардисти
Дерхэм Обслуживание Каулард
Поуд Обслуживание Каулард
Проблема здесь заключается в том, что хотя эта таблица дана в третьей
нормальной форме, все равно имеет место аномалия удаления. Если Уэллса
убрать из группы наблюдения, то мы потеряем дополнительный элемент
несвязанного знания, а именно информацию о том, что Реймуол – руководитель
группы наблюдения. Когда в группу наблюдения будет назначен новый член
экипажа и мы возьмем список руководителей групп, в подчинение которым
можно его назначить, Реймуола в этом списке не будет.
В отличие от предыдущих нормальных форм, где мы могли разбить
таблицу без создания избыточности, здесь мы вынуждены хранить некоторую