Множество FD S2 называется покрытием множества FD S1, если любая FD, выводимая из S1, выводится также из S2 .
Легко заметить, что S2 является покрытием S1 тогда и только тогда, когда \[ S1^{+}\in S2^{+} \] . Два множества FD S1 и S2 называются эквивалентными, если каждое из них является покрытием другого, т. е. S1+ = S2+.
Множество FD S называется минимальным в том и только в том случае, когда удовлетворяет следующим свойствам:
Чтобы продемонстрировать минимальные и неминимальные множества FD, вернемся к примеру отношения СЛУЖАЩИЕ_ПРОЕКТЫ {СЛУ_НОМ, СЛУ_ИМЯ, СЛУ_ЗАРП, ПРО_НОМ, ПРОЕКТ_РУК} с рис. 6.1. Если считать, что единственным возможным ключом этого отношения является атрибут СЛУ_НОМ, то множество FD {СЛУ_НОМ->СЛУ_ИМЯ, СЛУ_НОМ->СЛУ_ЗАРП, СЛУ_НОМ->ПРО_НОМ, ПРО_НОМ->ПРОЕКТ_РУК} будет минимальным. Действительно, в правых частях FD этого множества находятся множества, состоящие ровно из одного атрибута; каждый из детерминантов тоже является множеством из одного атрибута, удаление которого, очевидно, недопустимо; удаление каждой FD явно приводит к изменению замыкания множества FD, поскольку утрачиваемая информация не выводится с помощью аксиом Армстронга.
С другой стороны, множества FD
не являются минимальными. Для множества (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 имеется хотя бы одно минимальное покрытие, причем для его нахождения не обязательно находить замыкание исходного множества.