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



.









![\left( r\left( A,B,C \right)=r\left[ A,B \right]\ \text{JOIN}\ r\left[ A,C \right] \right)\Leftrightarrow \left( A\twoheadrightarrow B|C \right)](http://upload.wikimedia.org/math/8/e/4/8e45f89cfe338993d3c82eeff8762d63.png)