Скачиваний:
48
Добавлен:
01.04.2014
Размер:
690.69 Кб
Скачать

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

Замечание. Далее в этой главе выражение "функциональная зависимость" будет ино­гда для краткости заменяться словом "зависимость", а "функционально зависим от" — словами "функционально определяется как" и т.п.

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

{ S#, P# } -> S#

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

Как следует из названия, такие зависимости не представляют никакого интереса с практической точки зрения, в отличие от нетривиальных зависимостей, которые фактиче­ски являются "истинными" ограничениями целостности. Однако в формальной теории за­висимостей не следует предполагать присутствие только нетривиальных зависимостей.

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

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

{ S#, Р# } -> { CITY, QTY }

подразумевает следующие ФЗ:

{ S#, Р# } -> CITY

{ S#, P# } -> QTY

В качестве более сложного примера можно привести отношение R с тремя атрибу­тами А, В и С, для которых выполняются функциональные зависимости А —> В и В —> С. В таком случае нетрудно заметить, что также выполняется зависимость А —> С, которая называется транзитивной функциональной зависимостью, т.е. С транзитивно через В зависит от А.

Множество всех ФЗ, которые задаются данным множеством функциональных зависи­мостей S, называется замыканием S и обозначается символом S +. Из сказанного выше ста­новится ясно, что для выполнения сформулированной задачи следует найти способ вы­числения S+ на основе S. Первой попыткой решить эту проблему была статья Армстронга (Armstrong) [9.1], в которой представлен набор правил вывода функциональных зависимо­стей на основе заданных (эти правила также называются аксиомами Армстронга). Прави­ла могут формулироваться разными способами, а самый простой из них приводится ниже.

Правила вывода Армстронга. Пусть в перечисленных ниже правилах А, В и С — произвольные подмножества множества атрибутов заданного отношения R, а символическая запись АВ означает объединение А и В.

1. Рефлексивность: если В является подмножеством А, то А —> В.

2. Дополнение: если А —> В, то АС —> ВС.

3. Транзитивность: если А —> В и В —> С, то А —> С.

Каждое из этих правил может быть непосредственно доказано на основе опреде­ления функциональной зависимости (первое из них — это всего лишь определение тривиальной зависимости ). Более того, эти правила являются полными в том смысле, что для заданного множества функциональных зависимостей минимальный набор ФЗ , которые подразумевают все зависимости S , может быть выведен из S на основе этих правил. Они также являются исчерпывающими, поскольку никакие дополнительные ФЗ не могут быть выведены (т.е. ФЗ, которые не подразумеваются зависимостями множества S). Иначе говоря, эти правила могут быть использованы для получения замыкания S .

Из трех описанных выше правил для упрощения задачи практического вычисления замыкания S+ можно вывести несколько других правил. (Пусть D это другое произвольное подмножество множества атрибутов R.)

4. Самоопределение: А —> А.

5. Декомпозиция: если А —> ВС, то А —> В и А —> С.

6. Объединение: если А—>В и А—>С, то А—> ВС.

7. Композиция: если А —> В и С —> D, то AC —> BD.

Кроме того, Дарвен (Darwen) в своей работе [9.6] доказал следующее правило которое назвал теоремой всеобщего объединения:

8. Если А —> В и С —> D, то А U (С - В) —> BD (где символ "U" обозначает объединение множеств, а символ " - " — их разность).

Название "теорема всеобщего объединения" указывает на то, что некоторые перечисленные ранее правила могут быть выведены как частные случаи этой теоремы [9.6].

Пример. Пусть дано некоторое отношение R с атрибутами А, В, С, D, Е, F и следующими ФЗ:

А -> ВС

В -> Е

CD -> EF

Обратите внимание, что способ записи несколько изменился (без ущерба для смысла ) : например, символы ВС означают множество, состоящее из атрибутов В и С, хотя ранее эти символы означали объединение В и С, где В и С были множествами атрибутов.

Замечание. Если необходимо, этому примеру можно придать более конкретный смысл, а именно: А — номер сотрудника, В — номер отдела, С — номер руководителя (начальника) данного сотрудника, D — номер проекта, возглавляемого данным руководителем (уникальный для каждого отдельно взятого руководителя), Е — название отдела, F — доля времени, уделяемая данным руководителем заданному проекту.

Теперь можно показать, что зависимость AD —> F выполняется для отношения R и таким образом принадлежит замыканию данного множества ФЗ.

1. А —> ВС ( дано )

2. А —> С ( из 1 согласно декомпозиции )

3. AD —> CD ( из 2 согласно дополнению )

4.CD —> EF ( дано )

5. AD —> EF ( из 3 и 4 согласно транзитивности )

6. AD —> F ( из 5 согласно декомпозиции )

Соседние файлы в папке Дейтл Введ в БД