Замыкание множества функциональных зависимостей. Аксиомы

advertisement
Замыкание множества функциональных зависимостей. Аксиомы Армстронга и
замыкание множества атрибутов.
Пусть у нас есть множество функциональных зависимостей FD – S. Его замыканием S+ называется
множество функциональных зависимостей, включающее все функциональные зависимости,
логически выводимые из функциональных зависимостей множества S. Подход к решению
проблемы поиска замыкания множества функциональных зависимостей впервые предложил
Армстронг. Он предложил набор правил вывода новых функциональных зависимостей из
существующих, которые называются аксиомами Армстронга.
Пусть есть отношение R, и в нем атрибуты, возможно составные A,B,C. Не исключается тот случай,
когда они пересекаются. Для краткости A UNION B = AB.
1. B E A => A -> B – рефлексивность
2. A -> B => AC -> BC – аксиома пополнения.
3. A ->B ^ B -> C => A -> C – аксиома транзитивности
Док. 2.
П AC +> BC => 3 t1,t2 E R
t1 {AC} = t2 {AC}^ t1{BC} != t2{BC}
t1{A} = t2{A} по 1 аксиоме. => t1{B} = t2{B} => t1{C} != t2{C} – получено противоречие по аксиоме 1.
Док 3.
П. A +> C Э t1,t2 E R
t1{A} = t2{A} ^ t2{C} != t2{C}
t2{B} = t2{B} => t1{C} = t2{C} == противоречия.
Система аксиом Армстронга полна и совершенна. По практическим соображениям этот набор
аксиом дополняется еще 5 правилами:
4.
5.
6.
7.
8.
Самодетерминированность. A -> A.
Декомпозиция A -> BC => A->B ^ A -> C.
Объединение A -> B ^ A -> C => A -> BC.
Правило композиции A -> B ^ C -> D => AC -> BD
Правило накопления A -> BC ^ B -> D => A -> BCD
Пусть задано отношение R, некий его составной атрибут Z и некое множество функциональных
зависимостей S над атрибутами этого же отношения R.
Замыканием атрибута Z (Z+) над множеством функциональных зависимостей S называется
наибольшее множество таких атрибутов Y отношения R, что функциональная зависимость Z -> Y
принадлежит S+. Замыкание атрибута – множество всех атрибутов, функционально зависящих от
него. Можно записать алгоритм вычисления замыкания атрибута.
K = 0 – шаг индукции (Цикла)
Z+[0] = Z
DO
K:=K+1;
Z+[K] = Z+[K-1];
FOR EACH FD A -> B IN S+
IF A E Z+[K] THEN Z+[K] = Z+[K] UNION B
END FOR
UNTIL Z+[K] = Z+[K-1]
Алгоритм построения замыкания множества атрибутов Z над заданным множеством
функциональных зависимостей S помогает легко установить входит ли заданная функциональная
зависимость Z -> B в замыкание S+ множества S. Необходимым и достаточным условием для этого
является B E Z+.
Суперключом отношения R называется любое подмножество K заголовка R, включающее по
меньшей мере хотя бы один возможный ключ отношения R. Подмножества K отношения R
является суперключом  V атрибута A выполняется K -> A, или что тоже самое, что когда
замыкание множества атрибутов K есть весь заголовок отношения R.
Минимальное покрытие множества функциональных зависимостей.
FD S1, FD S2
S2 – покрытие S1, если любая функциональная зависимость, которая выводится из S1, выводится
также из S2. Из перечисленного ранее очевидно, что S2 является покрытием S1  когда
замыкание S1 является подмножеством S2.
2 множества функциональных зависимостей S1 , S2, если каждое из них является покрытием
другого.
Множество функциональных зависимостей S называется минимальным в том и только в том
случае, когда оно удовлетворяет следующим требованиям:
1. Правая часть любой функциональной зависимости из S является множеством из одного
атрибута.
2. Левая часть (детерминант) любой функциональной зависимости из S обладает свойством
минимальности – это означает, что удаление любого атрибута из левой части зависимости
приводит к изменению замыкания S+, т.е. к получению множества функциональных
зависимостей, не эквивалентного S.
3. Удаление любой функциональной зависимости из S приводит к изменению S+ т.е.
порождению множества функциональных зависимостей, не эквивалентного S.
Важным в практическом отношении является тот факт, что для любого множества
функциональных зависимостей S существует и может быть построена эквивалентное ему
минимальное множество функциональных зависимостей S-.
Приведем схему построения множества S- по заданному множеству S.
На первом этапе используем правило 5 и избавляемся от всех функциональных зависимостей,
которые содержат составные атрибуты в правой части.
На втором этапе рассматриваем те функциональные зависимости, у которых левая часть состоит
более чем из одного атрибута. Пытаемся по очереди удалять атрибуты и после удаления
проверяем, не изменилось ли S+. Если замыкание не изменилось, оставляем измененный
вариант, иначе возвращаемся к предыдущему варианту и в результате второго этапа получаем
множество функциональных зависимостей, удовлетворяющему правилу 1 и 2.
На третьем этапе пытаемся исключать по очереди каждую из оставшихся зависимостей из
множества S. По окончании третьего этапа получается множество функциональных зависимостей,
которые эквивалентны исходному и в то же время минимальны.
Download