Определения
Пусть существует некоторое отношение
со схемой
, а также два произвольных подмножества атрибутов
. Пусть
.
В этом случае
многозначно зависит от
, тогда и только тогда, когда множество значений атрибута
, соответствующее заданной паре
отношения
, зависит от
и не зависит от
.
Символически выражается записью
.
Формально
Многозначная зависимость
называется тривиальной, если выполняется хотя бы одно из условий:
- Множество
является надмножеством
;
- Объединение
и
образует весь заголовок отношения.
Пример
Предположим, у нас есть отношение, в которое входит список учебных дисциплин, рекомендованная литература и имена лекторов, читающих соответствующие курсы:
Учебные дисциплины
Дисциплина | Книга | Лектор |
МатАн | Кудрявцев | Иванов А. |
МатАн | Фихтенгольц | Петров Б. |
МатАн | Кудрявцев | Петров Б. |
МатАн | Фихтенгольц | Иванов А. |
МатАн | Кудрявцев | Смирнов В. |
МатАн | Фихтенгольц | Смирнов В. |
ВМ | Кудрявцев | Иванов А. |
ВМ | Кудрявцев | Петров Б. |
Так как лекторы, читающие предмет, и книги, рекомендованные по предмету, друг от друга не зависят, то данное отношение содержит многозначную зависимость. Такое отношение обладает целым рядом аномалий. Одна из них состоит в том, что если мы хотим порекомендовать новую книгу по курсу МатАн, нам придется добавить столько новых записей, сколько лекторов ведут МатАн и наоборот.
Формально, здесь две МЗЗ: {Дисциплина}
{Книга}|{Лектор}.
Во-первых, это избыточно. А во-вторых, для такого отношения необходимо разрабатывать дополнительный механизм контроля целостности. Оптимальным решением проблемы будет декомпозиция отношения на два с заголовками {Дисциплина, Книга} и {Дисциплина, Лектор}. Такая декомпозиция будет находиться в 4NF. Допустимость декомпозиции устанавливает теорема Феджина (см. далее).
Теоремы
Связные пары
Феджин показал, что многозначные зависимости образуют связные пары (в обозначениях определения):
.
Поэтому их часто представляют вместе в символической записи:
Функциональные зависимости
Всякая функциональная зависимость является многозначной. Другими словами, функциональная зависимость — это многозначная зависимость, в которой множество зависимых значений, соответствующее заданному значению детерминанта, всегда имеет единичную мощность.
Правила вывода
В 1977 году Бэри, Феджин и Ховард установили, что правила вывода Армстронга можно обобщить и распространить, как на функциональные, так и на многозначные зависимости.
Пусть у нас есть отношение
и множества атрибутов
. Для сокращения записи вместо
будем писать просто
.
Группа 1: базовые правила.
- Дополнение
- Транзитивность
- Рефлексивность
- Приращение
Группа 2: выводятся несколько дополнительных правил, упрощающих задачу вывода многозначных зависимостей.
- Псевдотранзитивность
- Объединение
- Декомпозиция
Группа 3: устанавливается связь между функциональными и многозначными зависимостями.
- Репликация (копирование)
- Слияние
Группа 4: для функциональных зависимостей, выводятся из вышеприведенных правил.
Правила вывода Армстронга вместе с изложенными здесь правилами групп 1 и 3 образуют полный (используя их, можно вывести все остальные многозначные зависимости, подразумеваемые данным их множеством) и надежный («лишних» многозначных зависимостей вывести нельзя; выведенная многозначная зависимость справедлива везде, где справедливо то множество многозначных зависимостей, из которого она была выведена) набор правил вывода многозначных зависисмостей.
Применение
Декомпозиция отношений
Теорема Феджина
Пусть дано отношение
. Отношение
будет равно соединению его проекций
и
тогда и только тогда, когда для отношения
выполняется нетривиальная многозначная зависимость
.
Эта теорема является более строгой версией теоремы Хита.
Литература
- К. Дж. Дейт. Введение в системы баз данных = Introduction to Database Systems. — 8-е изд. — М.: «Вильямс», 2006. — С. 1328. — ISBN 0-321-19784-4.