Опубликован: 10.10.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Московский физико-технический институт
Лекция 6:

Элементы теории реляционных баз данных: функциональные зависимости и декомпозиция без потерь

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >

Минимальное покрытие множества функциональных зависимостей

Множество FD S2 называется покрытием множества FD S1, если любая FD, выводимая из S1, выводится также из S2 .

Легко заметить, что S2 является покрытием S1 тогда и только тогда, когда S1^{+}\in S2^{+}. Два множества FD S1 и S2 называются эквивалентными, если каждое из них является покрытием другого, т. е. S1+ = S2+.

Множество FD S называется минимальным в том и только в том случае, когда удовлетворяет следующим свойствам:

  1. правая часть любой FD из S является множеством из одного атрибута (простым атрибутом);
  2. детерминант каждой FD из S обладает свойством минимальности ; это означает, что удаление любого атрибута из детерминанта приводит к изменению замыкания S+, т. е. порождению множества FD, не эквивалентного S3 FD с минимальным детерминантом называется минимальной слева. ;
  3. удаление любой FD из S приводит к изменению S+, т. е. порождению множества FD, не эквивалентного S.

Чтобы продемонстрировать минимальные и неминимальные множества FD, вернемся к примеру отношения СЛУЖАЩИЕ_ПРОЕКТЫ {СЛУ_НОМ, СЛУ_ИМЯ, СЛУ_ЗАРП, ПРО_НОМ, ПРОЕКТ_РУК} с рис. 6.1. Если считать, что единственным возможным ключом этого отношения является атрибут СЛУ_НОМ, то множество FD {СЛУ_НОМ->СЛУ_ИМЯ, СЛУ_НОМ->СЛУ_ЗАРП, СЛУ_НОМ->ПРО_НОМ, ПРО_НОМ->ПРОЕКТ_РУК} будет минимальным. Действительно, в правых частях FD этого множества находятся множества, состоящие ровно из одного атрибута; каждый из детерминантов тоже является множеством из одного атрибута, удаление которого, очевидно, недопустимо; удаление каждой FD явно приводит к изменению замыкания множества FD, поскольку утрачиваемая информация не выводится с помощью аксиом Армстронга.

С другой стороны, множества FD

  1. {СЛУ_НОМ->{СЛУ_ИМЯ, СЛУ_ЗАРП}, СЛУ_НОМ->ПРО_НОМ, СЛУ_НОМ->ПРОЕКТ_РУК, ПРО_НОМ->ПРОЕКТ_РУК},
  2. {СЛУ_НОМ->СЛУ_ИМЯ, {СЛУ_НОМ, СЛУ_ИМЯ}->СЛУ_ЗАРП, СЛУ_НОМ->ПРО_НОМ, СЛУ_НОМ->ПРОЕКТ_РУК, ПРО_НОМ->ПРОЕКТ_РУК} и
  3. {СЛУ_НОМ->СЛУ_НОМ, СЛУ_НОМ->СЛУ_ИМЯ, СЛУ_НОМ->СЛУ_ЗАРП, СЛУ_НОМ->ПРО_НОМ, СЛУ_НОМ->ПРОЕКТ_РУК, ПРО_НОМ->ПРОЕКТ_РУК}

не являются минимальными. Для множества (1) в правой части первой FD присутствует множество из двух элементов. Для множества (2) удаление атрибута СЛУ_ИМЯ из детерминанта второй FD не меняет замыкание множества FD. Для множества (3) удаление первой FD не приводит к изменению замыкания. Эти примеры показывают, что для определения минимальности множества FD не всегда требуется явное построение замыкания данного множества.

Интересным и важным является тот факт, что для любого множества FD S существует (и даже может быть построено) эквивалентное ему минимальное множество S-.

Приведем общую схему построения S- по заданному множеству FD S. Во-первых, используя правило (5) (декомпозиции), мы можем привести множество S к эквивалентному множеству FD S1, правые части FD которого содержат только одноэлементные множества (простые атрибуты). Далее, для каждой FD из S1, детерминант D {D1, D2, …, Dn} которой содержит более одного атрибута, будем пытаться удалять атрибуты Di, получая множество FD S2. Если после удаления атрибута Di S2 эквивалентно S1, то этот атрибут удаляется, и пробуется следующий атрибут. Назовем S3 множество FD, полученное путем допустимого удаления атрибутов из всех детерминантов FD множества S1. Наконец, для каждой FD f из множества S3 будем проверять эквивалентность множеств S3 и S3 MINUS {f}. Если эти множества эквивалентны, удалим f из множества S3, и в заключение получим множество S4, которое минимально и эквивалентно исходному множеству FD S.

Пусть, например, имеется отношение r {A, B, C, D} и задано множество FD S = {A->B, A->BC, AB->C, AC->D, B->C}. По правилу декомпозиции S эквивалентно множеству S1 {A->B, A->C, AB->C, AC->D, B->C}. В детерминанте FD AC->D можно удалить атрибут C, поскольку по правилу дополнения из FD A->C следует A->AC ; по правилу транзитивности выводится FD A->D, поэтому атрибут C в детерминанте FD AC->D является избыточным. FD AB->C может быть удалена, поскольку может быть выведена из FD A->C (по правилу пополнения из этой FD выводится AB->BC, а по правилу декомпозиции далее выводится AB->C ). Наконец, FD A->C тоже выводится по правилу транзитивности из FD A->B и B->C. Таким образом, мы получаем множество зависимостей {A->B, A->D, B->C}, которое является минимальным и эквивалентно S по построению.

Минимальным покрытием множества FD S называется любое минимальное множество FD S1, эквивалентное S .

Поскольку для каждого множества FD существует эквивалентное минимальное множество FD, у каждого множества FD имеется хотя бы одно минимальное покрытие, причем для его нахождения не обязательно находить замыкание исходного множества.

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Nikolay Karasev
Nikolay Karasev

Хотелось бы иметь возможность читать текст сносок при использовании режима "Версия для печати"
 

Александра Каева
Александра Каева