Понятие многозначной зависимости
Отношение может находиться в 3НФ или в НФБК и обладать нежелательными свойствами. Рассмотрим отношение СБЫТ (табл. 3.7).
Кортеж <z t m> означает, что завод z производит товар t и снабжает магазин m. Предположим, что завод производит различные товары и снабжает разные магазины. Следовательно, имеются две независимые друг от друга функции: ПРОИЗВОДСТВО и СНАБЖЕНИЕ (рис. 3.4), т. е. в отношении СБЫТ не выполняются F-зависимости ЗАВОДàTOBAP и ЗАВОДàМАГАЗИН. Однако это отношение без потери информации разлагается на два отношения: ПРОИЗВОДСТВО (табл. 3.8) и СНАБЖЕНИЕ (табл. 3.9).
Рассмотрим отношение СБЫТ1 с такой же схемой (табл. 3.7).
Рис. 3.4. Функция отношения СБЫТ
Таблица 3.7. Отношение СБЫТ
ЗАВОД | ТОВАР | МАГАЗИН |
z1 | t1 | m1 |
z1 | t1 | m2 |
z1 | t2 | m1 |
z1 | t2 | m2 |
z2 | t2 | m2 |
Таблица 3.8. Производство
ЗАВОД | ТОВАР |
z1 | t1 |
z1 | t2 |
z2 | t2 |
Таблица 3.9. Снабжение
ЗАВОД | МАГАЗИН |
z1 | m1 |
z1 | m2 |
z2 | m2 |
Таблица 3.10. Отношение СБЫТ1
ЗАВОД | ТОВАР | МАГАЗИН |
z1 | t1 | m1 |
z1 | t1 | m2 |
z1 | t2 | m1 |
z2 | t2 | m2 |
Разложив это отношение на схемы ПРОИЗВОДСТВО (ЗАВОД ТОВАР) и СНАБЖЕНИЕ (ЗАВОД МАГАЗИН), снова получим соответствующие проекции в табл. 3.8 и 3.9. Однако соединение данных проекций не восстанавливает исходного отношения, так как появляется кортеж <z1 t2 m2>
Проанализируем, какими же свойствами отличаются отношения СБЫТ и СБЫТ1. В первом случае если некоторый товар, например t2, производится заводом, например z1, то он поставляется во все магазины, а во втором случае — нет. В действительности, если завод z1 начинает снабжать новый магазин m3, то в отношении СБЫТ нужно создать два новых кортежа: по одному для каждого товара. Это связано с взаимной независимостью двух функций (см. рис. 3.4) и лучше осуществляется с помощью двух проекций отношения СБЫТ.
Пусть R(A) —отношение, где А = {А1, А2,...,Аn}, X, У, Z — подмножества А. Имеет место многозначная зависимость в отношении R, которую обозначают XààY/Z, если при наличии в R кортежей <х у z> и <х у' z'> должны обязательно быть кортежи <х у' z> и <х у z'>.
Так, для рассмотренного выше отношения СБЫТ имеем
ЗАВОДàà ТОВАР/МАГАЗИН, что означает:
если завод производит товар, то он поставляется во все магазины, которые снабжаются заводом;
если завод снабжает некоторый магазин, то магазину поставляются все товары, производимые заводом;
все товары, производимые заводом, продаются магазинами, которые снабжаются заводом.
Пусть R(A) - реляционная схема, X, У - непересекающиеся подмножества A, Z = A - (X, У). Отношение R удовлетворяет многозначной зависимости (MV-зависимости), если для любых кортежей t1 и t2 из R, для которых t1(X)=t2(X), в R существует кортеж t3, для которого t3(Х) = t1(Х), t3(У)=t1(У), t3(Z)=t2(Z). Из симметрии определения относительно t1 и t2 получаем, что в R имеется также кортеж t4, для которого t4(X)=t1{X), t4(Y)=t2{Y) и t4(Z) = t1{Z). Из определения MV-зависимости вытекает следующее утверждение.
Утверждение. Если отношение r(R) удовлетворяет MV-зависимости XààY и Z = R—{X, Y), то r удовлетворяет XààY
В определении MV-зависимости XààY требуется, чтобы ее левая и правая части различались, т. е. чтобы пересечение X и Y было пустым. Для этого есть две причины: во-первых, свойство транзитивности не всегда выполняется, если снято ограничение, и, во-вторых, проектировщик использует на практике MV-зависимости с непересекающимися множествами атрибутов.
Предположим, что в определении MV-зависимости XààY пересечение X и Y не является пустым, т. е. отношение r(R) удовлетворяет XààY и Y' = Y — X. Тогда r(R) удовлетворяет XààY. Действительно, в соответствии с определением MV-зависимости XààY найдутся кортежи t1 и t2, для которых t1 (X) = t2 (X), и должен быть кортеж t3, для которого t3{X) = t1(X), t3(Y) =t1(Y), t3(Z)=t2(Z). Но если t3(Y) = t1(У), то t3(Y')= t1(Y'), так как У' ≤Y. Итак, r удовлетворяет XààY'.
Предположим, что пересечение X и У пусто и отношение r(R) удовлетворяет ХààY. Если X' Y, то X àà YХ' согласно модифицированному определению MV-зависимости; если t1, t2 принадлежит r и t1 (X) = t2 (X) существует кортеж t3, для которого t3 (X) = t1 (X), t3 (Y) = t1(Y), t3 (Z) = t2 (Z). Следовательно, t3 (YX') = t1 (YX').
Связь MV-зависимости с декомпозициями без потерь можно выразить следующим утверждением.
Утверждение. Пусть r(R) —отношение, X, Y, Z — подмножества из R такие, что Z=R—{XY). Отношение r удовлетворяет MV-зависимости Хàà У тогда и только тогда, когда r без потери информации разлагается на отношения со схемами R1 = XY и R2 = XZ.
Для проверки выполнимости XààY в отношении r его нужно спроектировать на XY и X(R—XY), соединить и результат сравнить с r. Можно проверить MV-зависимость, не используя проектирования и соединения, а только сортировку и подсчет. Пусть Z = R—(XY), R1 = XY, R2 = XZ. Если r1 =πR1(r) и r2 =πR2(r), то r1 ∞ r2 всегда содержит r. Пусть, далее, для некоторого x, принадлежащего Х, существует с1 кортежей в r1 и с2 кортежей в r2 со значением х. Пусть с — число таких кортежей в r. Если для любого x, принадлежащего Х, c=c1×c2 , то r=r1 ∞ r2