С помощью приведения к нормальной формы Бойса-Кодда можно избавиться от любых аномалий обновления, которые вызваны функциональными зависимостями.
Четвертая нормальная форма (4NF) относится к отношениям, которые содержат повторяющиеся наборы данных. Разбиение (декомпозиция), которая основана на функциональных зависимостях, не может привести к избавлению от такой избыточности. В таком случае используется декомпозиция, основанная на многозначных зависимостях.
Многозначные зависимости
Под многозначной зависимостью понимают обобщение функциональной зависимости, которая рассматривает соответствия между множествами (более двух) значений атрибутов.
Рассмотрим отношение ПРЕПОДАВАТЕЛИ (ФАМИЛИЯ, КУРС, УЧЕБНИК), которое хранит информацию о курсах, читаемых преподавателем, и им написанных учебных пособиях. Пусть преподаватель А читает курс ИНФОРМАТИКА и СЕТИ ЭВМ и имеет одноименные учебники, а преподаватель В ведет курс ПРОГРАММИРОВАНИЕ и является автором учебных пособий ПРОГРАММИРОВАНИЕ и ТЕОРИЯ АЛГОРИТМОВ. В таком случае рассматриваемое отношение будет иметь следующий вид:
Добавим:
Данное отношение характеризуется значительной избыточностью и его применение приведет к появлению аномалии обновления.
К примеру, добавление сведений о том, что преподаватель В будет также вести лекции по курсу ИНФОРМАТИКА приведет к необходимости добавления двух кортежей (по количеству написанных им учебников) вместо одного. В то же время, отношение ПРЕПОДАВАТЕЛИ находится в нормальной форме Бойса-Кодда (ключевой атрибут – ФАМИЛИЯ).
Обратим внимание, что рассматриваемые аномалии исчезнут при замене отношения ПРЕПОДАВАТЕЛИ его проекциями:
В данном случае появление аномалии обновления объясняется тем, что в отношении ПРЕПОДАВАТЕЛИ:
- множество значений атрибута КУРС зависит от множества значений атрибута ФАМИЛИЯ;
- множества значений атрибута УЧЕБНИК зависит от множества значений атрибута ФАМИЛИЯ.
Называют подобные зависимости многозначными и обозначают:
ФАМИЛИЯ $\to$ КУРС
ФАМИЛИЯ $\to$ УЧЕБНИК
Обратим внимание, что многозначными зависимостями всегда образуются связанные пары, тогда они часто обозначаются:
ФАМИЛИЯ $\to$ КУРС $\mid$ УЧЕБНИК.
Важно понимать, что многозначной является каждая функциональная зависимость, но функциональной является не каждая многозначная зависимость.
Четвертая нормальная форма
Отношение находится в четвертой нормальной форме, если это отношение находится в нормальной форме Бойса-Кодда и оно не содержит многозначных зависимостей, которые не являются функциональными зависимостями.
Следовательно, так как проблема многозначных зависимостей связана с многозначными атрибутами, то разрешить данную проблему можно с помощью помещения каждого многозначного атрибута в свою собственную таблицу совместно с ключом, от которого зависит атрибут.
Рассмотрим отношение: ИССЛЕДОВАНИЕ (Номер_Исслед, Студент, Задание).
Отношение ИССЛЕДОВАНИЕ содержит номера тем исследований, для каждой темы указывается список студентов, которые могут выполнять исследование по теме, и список заданий данной темы. Студенты могут участвовать в нескольких исследованиях, и разные исследования могут содержать одинаковые задания. В данной ситуации единственный возможный ключ отношения – это составной атрибут: (Номер_Исслед, Студент, Задание).
Отношение содержит избыточные данные и вызывает аномалии обновления.
В рассматриваемом отношении ИССЛЕДОВАНИЕ существуют 2 многозначные зависимости:
Номер_Исслед $\to$ Студент;
Номер_Исслед $\to$ Задание.
В данном примере можно выполнить разбиение отношения ИССЛЕДОВАНИЕ на два отношения ИССЛЕДОВАНИЕ-СТУДЕНТЫ и ИССЛЕДОВАНИЕ-ЗАДАНИЯ:
ИССЛЕДОВАНИЕ-СТУДЕНТЫ (Номер_Исслед, Студент);
ИССЛЕДОВАНИЕ-ЗАДАНИЯ (Номер_Исслед, Задание).