НФ (Четвертая Нормальная Форма)
Рассмотрим следующий пример. Пусть требуется учитывать данные об абитуриентах, поступающих в ВУЗ. При анализе предметной области были выделены следующие требования:
Предположим, что нам требуется хранить данные о том, какие предметы должен сдавать каждый абитуриент. Попытаемся хранить данные в одном отношении "Абитуриенты-Факультеты-Предметы":
Иванов | Математический | Математика |
Иванов | Математический | Информатика |
Иванов | Физический | Математика |
Иванов | Физический | Физика |
Петров | Математический | Математика |
Петров | Математический | Информатика |
Таблица 7 Отношение "Абитуриенты-Факультеты-Предметы"
В данный момент в отношении хранится информация о том, что абитуриент Иванов поступает на два факультета (математически и физический), а абитуриент Петров - только на математический. Кроме того, можно сделать вывод, что на математическом факультете нужно сдавать математику и информатику, а на физическом - математику и физику.
Кажется, что в отношении имеется аномалия обновления, связанная с тем, что дублируются фамилии абитуриентов, наименования факультетов и наименования предметов. Однако эта аномалия легко устраняется стандартным способом - вынесением всех наименований в отдельные отношения, оставляя в исходном отношении только соответствующие номера:
1 | 1 | 1 |
1 | 1 | 2 |
1 | 2 | 1 |
1 | 2 | 3 |
2 | 1 | 1 |
2 | 1 | 2 |
Таблица 8 Модифицированное отношение "Абитуриенты-Факультеты-Предметы"
1 | Иванов |
2 | Петров |
Таблица 9 Отношение "Абитуриенты"
1 | Математический |
2 | Физический |
Таблица 10 Отношение "Факультеты"
1 | Математика |
2 | Информатика |
3 | Физика |
Таблица 11 Отношение "Предметы"
Теперь каждое наименование встречается только в одном месте.
И все-таки как в исходном, так и в модифицированном отношении имеются аномалии обновления, возникающие при попытке вставить или удалить кортежи.
Аномалия вставки. При попытке добавить в отношение "Абитуриенты-Факультеты-Предметы" новый кортеж, например (Сидоров, Математический, Математика), мы обязаны добавить также и кортеж (Сидоров, Математический, Информатика), т.к. все абитуриенты математического факультета обязаны иметь один и тот же список сдаваемых предметов. Соответственно, при попытке вставить в модифицированное отношении кортеж (3, 1, 1), мы обязаны вставить в него также и кортеж (3, 1, 2).
Аномалия удаления. При попытке удалить кортеж (Иванов, Математический, Математика), мы обязаны удалить также и кортеж (Иванов, Математический, Информатика) по той же самой причине.
Таким образом, вставка и удаление кортежей не может быть выполнена независимо от других кортежей отношения.
Кроме того, если мы удалим кортеж (Иванов, Физический, Математика), а вместе с ним и кортеж (Иванов, Физический, Физика), то будет потеряна информация о предметах, которые должны сдаваться на физическом факультете.
Декомпозиция отношения "Абитуриенты-Факультеты-Предметы" для устранения указанных аномалий не может быть выполнена на основе функциональных зависимостей, т.к. это отношение не содержит никаких функциональных зависимостей. Это отношение является полностью ключевым, т.е. ключом отношения является все множество атрибутов. Но ясно, что какая-то взаимосвязь между атрибутами имеется. Эта взаимосвязь описывается понятием многозначной зависимости.
Определение 2. Пусть
![](image/image23.gif)
![](image/image283.gif)
![](image/image174.gif)
![](image/image284.gif)
Тогда атрибуты (множества атрибутов)
![](image/image174.gif)
![](image/image284.gif)
![](image/image283.gif)
![](image/image285.gif)
![](image/image23.gif)
![](image/image286.gif)
![](image/image287.gif)
![](image/image23.gif)
![](image/image288.gif)
Замечание. Меняя местами кортежи
![](image/image289.gif)
![](image/image290.gif)
![](image/image23.gif)
![](image/image291.gif)
![](image/image174.gif)
![](image/image284.gif)
![](image/image283.gif)
![](image/image283.gif)
В отношении "Абитуриенты-Факультеты-Предметы" имеется многозначная зависимость Факультет
![](image/image292.gif)
Словами это можно выразить так - для каждого факультета (для каждого значения из
![](image/image283.gif)
![](image/image174.gif)
![](image/image284.gif)
![](image/image283.gif)
![](image/image284.gif)
![](image/image174.gif)
Замечание. Если в отношении
![](image/image23.gif)
![](image/image283.gif)
![](image/image174.gif)
![](image/image284.gif)
![](image/image293.gif)
![](image/image285.gif)
Действительно, действуя формально в соответствии с определением многозначной зависимости, предположим, что в отношении
![](image/image23.gif)
![](image/image286.gif)
![](image/image287.gif)
![](image/image293.gif)
![](image/image294.gif)
![](image/image288.gif)
![](image/image287.gif)
![](image/image23.gif)
![](image/image285.gif)
Таким образом, понятие многозначной зависимости является обобщением понятия функциональной зависимости.
Определение 3. Многозначная зависимость
![](image/image285.gif)
![](image/image293.gif)
![](image/image295.gif)
В отношении "Абитуриенты-Факультеты-Предметы" имеется именно нетривиальная многозначная зависимость Факультет
![](image/image292.gif)
Однако Фейджином Р. [52] доказана следующая теорема:
Теорема (Фейджина). Пусть
![](image/image283.gif)
![](image/image174.gif)
![](image/image284.gif)
![](image/image296.gif)
Декомпозиция отношения
![](image/image23.gif)
![](image/image297.gif)
![](image/image298.gif)
![](image/image285.gif)
Замечание. Если зависимость
![](image/image285.gif)
![](image/image293.gif)
![](image/image295.gif)
Доказательство теоремы.
Необходимость. Пусть декомпозиция отношения
![](image/image23.gif)
![](image/image297.gif)
![](image/image298.gif)
![](image/image285.gif)
Предположим, что отношение
![](image/image23.gif)
![](image/image286.gif)
![](image/image287.gif)
![](image/image288.gif)
![](image/image23.gif)
![](image/image299.gif)
![](image/image297.gif)
![](image/image300.gif)
![](image/image298.gif)
![](image/image288.gif)
![](image/image264.gif)
![](image/image23.gif)
Достаточность. Пусть имеется многозначная зависимость
![](image/image285.gif)
![](image/image23.gif)
![](image/image297.gif)
![](image/image298.gif)
Как и в доказательстве теоремы Хеза, нужно доказать, что
![](image/image254.gif)
![](image/image23.gif)
Включение
![](image/image261.gif)
![](image/image23.gif)
Докажем включение
![](image/image301.gif)
![](image/image302.gif)
![](image/image297.gif)
![](image/image299.gif)
![](image/image298.gif)
![](image/image300.gif)
![](image/image303.gif)
![](image/image284.gif)
![](image/image23.gif)
![](image/image286.gif)
![](image/image304.gif)
![](image/image174.gif)
![](image/image23.gif)
![](image/image287.gif)
![](image/image305.gif)
Определение 4. Отношение
![](image/image23.gif)
Отношение "Абитуриенты-Факультеты-Предметы" находится в НФБК, но не в 4НФ. Согласно теореме Фейджина, это отношение можно без потерь декомпозировать на отношения:
Математический | Иванов |
Физический | Иванов |
Математический | Петров |
Таблица 12 Отношение "Факультеты-Абитуриенты"
Математический | Математика |
Математический | Информатика |
Физический | Математика |
Физический | Физика |
Таблица 13 Отношение "Факультеты-Предметы"
В полученных отношениях устранены аномалии вставки и удаления, характерные для отношения "Абитуриенты-Факультеты-Предметы".
Заметим, что полученные отношения остались полностью ключевыми, и в них по-прежнему нет функциональных зависимостей.
Отношения с нетривиальными многозначными зависимостями возникают, как правило, в результате естественного соединения двух отношений по общему полю, которое не является ключевым ни в одном из отношений. Фактически это приводит к попытке хранить в одном отношении информацию о двух независимых сущностях. В качестве еще одного примера можно привести ситуацию, когда сотрудник может иметь много работ и много детей. Хранение информации о работах и детях в одном отношении приводит к возникновению нетривиальной многозначной зависимости Работник
![](image/image292.gif)