Функциональные зависимости и их свойства
Для объединения множеств атрибутов употребляются следующие обозначения:
если наименование атрибута имеет смысл, то вместо знака объединения ставится один пробел;
если атрибут обозначается произвольной латинской буквой, то знак объединения не ставится; запись XY эквивалентна X Y.
Множество атрибутов Y функционально зависит от множества атрибутов X, где X, Y {A1,А2,...,An}, если значения атрибутов в X единственным образом определяют значения атрибутов Y. В этом случае говорят, что между множествами атрибутов X и Y существует функциональная зависимость (F-зависимость), или X определяет Y; обозначают F : X
Y или просто X
Y.
Пример 3.1. Рассмотрим отношение ПОСТАВКИ (ПОСТАВЩИК, ГОРОД, ТОВАР, КОЛИЧЕСТВО). На значения атрибутов этого отношения накладываются следующие ограничения:
1) Осуществлять поставку данного товара в данном количестве из определенного города может только один поставщик;
2) Некоторый поставщик из данного города и в данном количестве может осуществлять поставку только одного товара;
Перечисленные ограничения являются F-зависимостями и их можно записать так:
1) ТОВАР ГОРОД КОЛИЧЕСТВО ПОСТАВЩИК
2) ГОРОД ПОСТАВЩИК КОЛИЧЕСТВО ТОВАР
Пусть R(A1,А2,...,An) — схема отношения, X и Y — подмножества атрибутов. Будем говорить, что отношение R удовлетворяет F-зависимости X Y, если для любых кортежей t1,t2
R из t1(X)=t2(X) следует t1(Y)= t2(Y). В F-зависимости X
Y подмножество X называется левой, а Y — правой частью.
Такая интерпретация F-зависимости является основой алгоритма ЗАВИСИМОСТЬ.
Вход. Отношение R и F-зависимость X Y.
Выход. Истина, если R удовлетворяет X Y, в противном случае — ложь.
Шаг 1. Сортировать отношение R по Х-столбцам так, чтобы собрать кортежи с равными X-значениями.
Шаг 2. Если каждая совокупность кортежей с равными X-значениями имеет также равные Y-значения, то на выходе получаем истину, в противном случае — ложь.
F-зависимостыо X Y на множестве атрибутов А можно считать упорядоченную пару (X,Y), где X,Y
A. Тогда множеством всех функциональных зависимостей над А будет L={(X, Y)| X
A, Y
A}.
Если Y не зависит от X, то записывают X Y. Если X
Y и Y
X, то X и Y называют эквивалентными или говорят, что между X и Y существует биекция, т. е. X
Y.
Пример 3.2. Пусть поставщик осуществляет поставки ТОВАРА, определенное КОЛИЧЕСТВО. Он находится в ГОРОДЕ и определенной СТРАНЕ. Можно сформировать следующие зависимости:
f1: ТОВАР КОЛИЧЕСТВО,
f2: ТОВАР ПОСТАВЩИК,
f3: ПОСТАВЩИК ГОРОД,
f4: ГОРОД СТРАНА,
f5: ТОВАР СТРАНА.
Аксиомы вывода
Для различных состояний отношения R(A) могут существовать разные совокупности F-зависимостей. Интерес представляет выявление множества F-зависимостей F, которым удовлетворяют все допустимые состояния R(A). Для этого нужно знать семантические связи между атрибутами отношения. Такое множество F-зависимостей можно считать заданным в схеме отношения R(A). В подобном случае любое отношение со схемой R(A) должно удовлетворять всем F-зависимостям из F. Данное множество F конечно, так как существует только конечное число подмножеств множества А. Одним из способов его нахождения является использование алгоритма ЗАВИСИМОСТЬ, что требует много времени. Другим способом являются аксиомы вывода — правила, позволяющие на основании данного множества F-зависимостей получить все F-зависимости, которым удовлетворяет отношение R(A). Рассмотрим эти аксиомы.
Пусть X, Y, Z, W — непустые подмножества множества A={A1,А2,...,An}. Тогда для любого отношения со схемой R(A) справедливы следующие аксиомы вывода.
F1. Рефлексивность: Х Х.
F2. Транзитивность: если X Y и Y
Z, то X
Z.
F3. Пополнение: если X Y, то XZ
Y.
F4. Псевдотранзитивность: если X Y и YZ
W, то XZ
W.
F5. Аддитивность: если X Y и X
Z, то X
YZ.
F6. Проективность: если X FZ, то X
Y или Х
Z.
Рассмотрим сформулированные аксиомы на примере отношения R, включающего атрибуты: X — ТОВАР, У — ПОСТАВЩИК, Z — ГОРОД, W — СТРАНА.
F1. Рефлексивность. Отношение πX( X=x(R)) всегда имеет не более одного кортежа. Следовательно, Х
Х всегда истинно в R. Например, ТОВАР
ТОВАР.
F2. Транзитивность. Пусть t1 и t2 — кортежи в R. Если t1(X) = t2(X), то t1(Y) = t2(Y), а из t1(Y) = t2(Y) вытекает t1(Z) = t2(Z). Таким образом, если
t1(X) = t2(X), то t1(Z) = t2(Z), т. е. R удовлетворяет X Z. Например, если ТОВАР
ПОСТАВЩИК и ПОСТАВЩИК
ГОРОД, то ТОВАР
ГОРОД.
F3. Пополнение. Эта аксиома позволяет расширить левую часть F-зависимости. Если R удовлетворяет X Y, то πY(
X=x(R)) имеет не более одного кортежа для любого х
Х. Если L
R, то
XZ=xz(R)
X=x(R) и, следовательно, πY(
XZ=xz(R))
πY(
X=x(R)). Таким образом, πY(
XZ=xz(R)) имеет максимум один кортеж и R должно удовлетворять F-зависимости XZ
Y. Например, если ТОВАР
ПОСТАВЩИК, то ТОВАР ГОРОД
ПОСТАВЩИК.
F4. Псевдотранзитивность. Пусть t1 и t2 — кортежи в R. По условию если t1(X) = t2(X), то t1(Y) = t2(Y), и аналогично, если t1(YZ) = t2(YZ), то t1(W) = t2(W). Из t1(XZ) = t2(XZ) получаем, что t1(X) = t2(X). Значит, t1(Y) = t2(Y) и, кроме того, t1(YZ) = t2(YZ), откуда следует, что t1(W) = t2(W). Таким образом, R удовлетворяет XZ W. Например, если ТОВАР
ПОСТАВЩИК и ПОСТАВЩИК ГОРОД
СТРАНА, то ТОВАР ГОРОД
СТРАНА.
F5. Аддитивность. Эта аксиома позволяет объединить две F-зависимости с одинаковыми левыми частями. Из X Y и X
Z следует, что πY(
X=x(R)) и πZ(
X=x(R)) имеют не более одного кортежа для любого х
Х. Если бы отношение πYZ(
X=x(R)) имело более одного кортежа, то по крайней мере одно из отношений πY(
X=x(R)) или πZ(
X=x(R)) имело бы более одного кортежа. Таким образом, R удовлетворяет F-зависимости X
YZ. Например, если ТОВАР
ПОСТАВЩИК и ТОВАР
ГОРОД, то ТОВАР
ПОСТАВЩИК ГОРОД.
F6. Проективность. Эта аксиома в некоторой степени обратна аксиоме аддитивности. Если R удовлетворяет Х YZ, то πYZ(
X=x(R)) имеет не более одного кортежа для любого х
Х. Так как πY(πYZ(
X=x(R))) = πY(
X=x(R)), то πY(
X=x(R)) также может иметь не более одного кортежа. Следовательно, R удовлетворяет Х
У. Например, если ТОВАР
ПОСТАВЩИК ГОРОД, то ТОВАР
ПОСТАВЩИК или ТОВАР
ГОРОД.
Некоторые аксиомы вывода могут быть получены из других аксиом. Например, транзитивность F2 является частным случаем псевдотранзитивности F4 при Z = . Аксиома F4 выводится из F1...F3 и F5; если X
Y и YZ
W, то, как следствие, F1, Z
Z. Согласно F3 имеем XZ
Y и XZ
Z. Используя F5, получаем XZ
YZ. Наконец, применяя F2, имеем XZ
W.
С помощью аксиом F1, F3 и F4 можно вывести аксиомы F2, F5 и F6. Как было сказано, F2 является частным случаем F4. Если X Y и X
Z, то из F1 получаем YZ
YZ и, дважды применяя F4, сначала получаем XZ
YZ, а затем X
YZ. Поэтому F5 следует из F1, F3 и F4. Для доказательства F6 предположим, что X
YZ. Из F1 имеем Y
Y, а из F3 получаем YZ
Y. Применение F4 дает X
Y.
Таким образом, аксиомы F1, F3 и F4 составляют полное подмножество для F1...F6 и являются независимыми в том смысле, что ни одна из аксиом не может быть получена из двух других. Аксиомы F1, F3 и F4 иногда называют аксиомами Армстронга.
Система аксиом F1...F6 является полной, т.е. путем одно- или многократного применения к F этих аксиом можно получить любую F-зависимость, которая следует из множества F.
Множество функциональных зависимостей F={f1,f2,...,fm}, находится в приведенной канонической форме, если F-зависимости не имеют одинаковых левых частей. Для таких функциональных зависимостей если Xi Yi и Xi
Yj, то Xi
Yi
Yj. Например, приведенной канонической формой для F={f1,f2, f3} из примера 3.2 будет:
ТОВАР КОЛИЧЕСТВО ПОСТАВЩИК СТРАНА.
Замыкания
Пусть F= {Xi Yi}, 1≤ i ≤n, — множество функциональных зависимостей. Замыканием множества F называют множество F+, содержащее все те зависимости, которые могут быть получены применением к F аксиом Армстронга. Замыкание множества функциональных зависимостей используется для определения биекций и ликвидации избыточности множества функциональных зависимостей.
Пример 3.3. Пусть F = {АВ С, С
В} — множество F-зависимостей на R(A, В, С). Тогда F+ = {А
А, AB
А, АС
A, АВС
А, В
В, АВ
B, ВС
В, ABC
В, С
С, АС
С, ВС
С, ABC
С, АВ
АВ, ABC
АВ, АС
AC, ABC
АС, ВС
ВС, ABC
ВС, ABC
ABC, АВ
С, АВ
АС, АВ
ВС, AВ
ABC, С
В, С
ВС, АС
В, АС
АВ}.
Вычисление F+ для множества зависимостей F является весьма трудоемкой задачей, так как множество зависимостей F+ может быть большим, даже если само F мало. Рассмотрим множество F = {A B1, A
B2,..., A
Bn}. Тогда F+ включает все зависимости A
Y, где Y — подмножество множества {B1,B2,...,Bn}. Так как существует 2n таких подмножеств Y, то даже при небольших n их нелегко перечислить.
Более простым является вычисление замыкания атрибутов множества А относительно множества функциональных зависимостей F. Пусть F — множество функциональных зависимостей на множестве атрибутов U, а X — некоторое подмножество U. Тогда Х+ — замыкание X относительно F — есть множество атрибутов А таких, что зависимость Х A может быть выведена из F по аксиомам Армстронга. Замыкание X+ позволяет сразу определить, выводится ли зависимость X
Y из F по аксиомам Армстронга. Существует следующая лемма.
Утверждение. Функциональная зависимость X Y выводится из аксиом Армстронга тогда и только тогда, когда Y
Х+.
Рассмотрим алгоритм вычисления замыкания множества атрибутов U относительно множества функциональных зависимостей F.
Вход. Конечные множества: атрибутов U, зависимостей F и атрибутов X U.
Выход. Замыкание Х+ множества атрибутов X относительно F.
Вычисляем последовательность множеств атрибутов Х(0), Х(1),... по следующим правилам.
Шаг 1. Х(0) есть X.
Шаг 2. Хi+1 есть Xi плюс множество атрибутов А таких, что в F существует некоторая зависимость Y Z, А принадлежит Z и Y
X(i) Поскольку Х = Х(0)
Х(1)
...
U и U конечно, в итоге достигнем такого i, что X(i) = X(i+1). Отсюда X(i) = X(i+1) =X(i+2) =... и поэтому процесс вычисления Х+ прекращается, если X(i) = X(i+1).
Пример 3.4. Пусть F состоит из следующих зависимостей:
АВ С, AE
G,
ВС D, D
EC,
В АЕ, EG
K,
а Х=АВ. Используя алгоритм, получаем Х(0)=Х=АВ. Для вычисления Х(1) находим зависимости, которые имеют в левой части А, В или АВ. Во множестве F существуют две зависимости: АВ С и В
АЕ. Поэтому присоединяем С и E к Х(0) получаем Х(1) =АВСЕ. Затем вычисляем Х(2) путем поиска левых частей зависимостей F, содержащихся в Х(1). Находим BC
D и AE
G. Таким образом, Х(2)=ABCDEG. Далее находим EG
K, D
G и, наконец, Х(3)=ABCDEGK — множество всех атрибутов. Следовательно, Х(3)= Х(4)= ... . Итак, получаем (AB)+=ABCDEGK.
Пусть задано отношение R на множестве атрибутов {A1,А2,...,An}, Множество атрибутов К называется ключом отношения R (первичным ключом), если каждый атрибут Ai {A1,А2,...,An},, который не входит в К, функционально зависит от К, т. е. К
Ai; и никакое подмножество К не удовлетворяет этому свойству. В дальнейшем ключевые атрибуты в схемах отношений будут подчеркиваться.
Пример 3.5. В функциональной зависимости ТОВАР ДАТА КОЛИЧЕСТВО ГОРОД ПОСТАВЩИК ключом является (ТОВАР ДАТА КОЛИЧЕСТВО).
Два множества F-зависимостей F и G над схемой отношения R эквивалентны, F ≡G, если F+ = G+. Если F ≡G, то F есть покрытие для G.
Пример 3.6. Множества F={A BC, A
D, CD
E} и G={А
ВСЕ, A
ABD, CD
E} эквивалентны. Множество F не эквивалентно множеству G'={A
BCDE}, поскольку зависимость CD
E не выводится в G'.
Множество F-зависимостей F неизбыточно, если у него нет такого собственного подмножества F' что F'≡F. Если такое подмножество F' существует, то F избыточно.
Пример 3.7. Множество F={АВ С, А
ВС, А
В, В
С} избыточно, так как есть подмножество F'={A
B, B
C}, которое эквивалентно F.
Пусть имеется множество функциональных зависимостей F={Xi Yi}, i =
. Множество атрибутов Zi
Xi называют посторонним в Xi, если Xi
Zi
Yi может быть получено в замыкании F+.
Пример 3.8. В примере 3.2 комбинация атрибутов ТОВАР и ПОСТАВЩИК определяет атрибут ГОРОД, т. е. f3 может заменить зависимость
ТОВАР ПОСТАВЩИК ГОРОД.
Из f2 видно, что атрибут ПОСТАВЩИК с левой стороны является посторонним.
Множество F-зависимостей F называют минимальным, если оно содержит не больше F-зависимостей, чем любое эквивалентное множество F-зависимостей.
Минимальное множество F-зависимостей не может содержать избыточных зависимостей. Таким образом, оно одновременно и неизбыточно.
Пример 3.9. Множество G={A BC, B
A, AD
E, BD
L} неизбыточно, но не минимально, поскольку существует множество F={A
BC, B
A, AD
EL}, которое эквивалентно G и содержит меньшее число F-зависимостей. Множество F является минимальным покрытием G.
При проектировании схем БД для минимального покрытия множества F-зависимостей полезно использовать следующие ограничения:
1) правая часть каждой F-зависимости содержит единственный атрибут;
2) ни для какой F-зависимости Х А в F множество F—(Х
А) не эквивалентно F;
3) ни для какой F-зависимости Х А в F и собственного подмножества Z
X множества F—(X
A)
(Z
A) и F не эквивалентны.
Пример 3.10. Пусть F состоит из таких F-зависимостей:
AB C, ACD
B, CG
BD,
C A, D
EG, CE
AG,
BC D, BE
C,
Используя условие 1), получаем
АВ C, D
Е, CG
B,
С A, D
G, CG
D,
ВС D, BE
C, СЕ
A,
ACD В, СЕ
G.
Здесь F-зависимость СЕ А избыточна, поскольку она следует из зависимости С
А. Подобным образом избыточна F-зависимость CG
B, так как из CG
D, С
А и ACD
B получаем CG
B. Никакие другие F-зависимости не являются избыточными. Однако ACD
B может быть замещена зависимостью CD
B, поскольку С
А. Таким образом, минимальное покрытие включает следующие F-зависимости:
AB C, CD
B, BE
C,
C A, D
E, CG
D,
BC D, D
G, CE
G.
Другое минимальное покрытие, построенное из F исключением СЕ А, CG
D и АСD
B, имеет вид
AB C, D
E, CG
B,
C A, D
G, CE
G.
B CD, BE
C,
Отметим, что эти два минимальных покрытия имеют разное число зависимостей.
Более короткое представление множества F является предпочтительным: во-первых, потому, что от мощности F зависит временная сложность алгоритмов для обработки этого множества; во-вторых, объем используемой памяти и число операций при модификации БД также определяются числом F-зависимостей.
Дата добавления: 2016-10-26; просмотров: 4420;