Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая работа / bd / базы данных2222.rtf
Скачиваний:
237
Добавлен:
17.02.2014
Размер:
19.41 Mб
Скачать

3.2. Тривиальные и нетривиальные зависимости

Очевидным способом сокращения размера множества ФЗ было бы исключение тривиальных зависимостей, т.е. таких, которые не могут не выполняться. В качестве примера приведем тривиальную ФЗ для отношения Поставки_из_города:

{ Код_поставщика, Код_товара} ® Код_Поставщика

Фактически ФЗ тривиальна тогда и только тогда, когда правая часть символической записи данной зависимости является подмножеством левой части.

Функциональная зависимость называется нетривиальной, если, по крайней мере, один из атрибутов Bi в функциональной зависимости A1 A2An ® B1 B2Bm не является элементом множества {A1 A2An}.

Функциональная зависимость называется полностью нетривиальной. Если ни один из атрибутов Bi не является элементом множества {A1 A2An}.

3.3. Замыкание множества зависимостей

Предположим: {A1 A2 … An} – множество атрибутов, а S – множество функциональных зависимостей.

Замыканием множества {A1 A2 … An} при условии выполнения функциональных зависимостей S называют множество B атрибутов, такое, что для каждого отношения, которому удовлетворяют все функциональные зависимости множества S справедлива и функциональная зависимость

A1 A2 … An à B

Замыкание множества атрибутов {A1 A2 … An} обозначают как {A1 A2 … An}+. Алгоритм вычисления замыкания множества атрибутов {A1 A2 … An}, по отношению к некоторому множеству функциональных зависимостей имеет следующий вид:

1. Пусть Х представляет множество атрибутов, подлежащее расширению до множества достижения замыкания. Х инициализируется значением {A1 A2 … An}.

2. Выполняется поиск некоторой функциональной зависимости B1 B2 … Bm ® С, такой, что все атрибуты B1 B2 … Bm принадлежат множеству Х, а С – нет. Если указанная функциональная зависимость существует. С добавляется в множество Х.

3. Шаг 2 повторяется до тех пор, пока существуют соответствующие функциональные зависимости, атрибуты которых подлежат включению в множество Х. Поскольку Х допускает только расширение, то количество атрибутов, которые могут быть добавлены в Х, рано или поздно будет исчерпано.

4. После завершения процедуры расширения множество Х содержит искомое значение замыкания {A1 A2 … An}+.

Рассмотрим отношение R с атрибутами А, В, С, D, E, F. Предположим, что отношению R удовлетворяют следующие функциональные зависимости:

AB ® С,

BC ® AD,

D ® E,

CF ® B.

Что представляет собой замыкание множества {A,В}, т.е. {A,В}+.

Вначале предположим, что Х = {A,В}. Атрибуты левой части зависимости AB ® С присутствуют в Х. Получим

Х = {A,В,С}. Теперь Х содержит атрибуты левой части функциональной зависимости BC ® AD. Следовательно, атрибут А и атрибут D мы можем добавить в Х. А уже является членом множества Х, а атрибут D - нет. Включаем атрибут D в множество Х. Получим Х = {A,В,С,D}. Далее воспользуемся зависимостью D ® E и добавим Е в множество Х. Получим Х = {A,В,С,D,Е}. Рассмотрим последнюю зависимость CF ® B. Эта зависимость не даст дальнейшего расширения множества Х, так как атрибут F не является элементом множества Х. Таким образом,

{A,В}+ = {A,В,С,D,Е}.

Описанный алгоритм позволяет проверить, является ли любая заданная функциональная зависимость A1 A2 … An ® B из множества функциональных зависимостей S. Вначале вычислим {A1 A2 … An}+, используя S. Если В является членом {A1 A2 … An}+, функциональная зависимость A1 A2 … An ® B следует из S. В противном случае -- не является.

Первая попытка решить проблему поиска функциональных зависимостей на основе заданных была предпринята в статье Армстронга. В ней автор предложил набор правил вывода ФЗ, которые были названы аксиомами Армстронга.

Соседние файлы в папке bd