Скачиваний:
102
Добавлен:
02.05.2014
Размер:
2.3 Mб
Скачать

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

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

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

' Эта функциональная зависимость не является тривиальной (раздел 10.3), причем А не явля­ется суперключом (раздел 10.5), a R содержит по крайней мере два кортежа.


{ Si, Pi } -» si

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

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

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

Как упоминалось выше, одни функциональные зависимости могут подразумевать другие функциональные зависимости. Например, рассмотрим приведенную ниже за­висимость.

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

Она подразумевает следующие функциональные зависимости.

{ S#, Pi } -» CITY { Si, Pi } -» QTY

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

Множество всех функциональных зависимостей, которые подразумеваются заданным множеством функциональных зависимостей S, называется замыканием множества S и обозначается символом S+. Из приведенного определения следует, что для решения сфор­мулированной задачи необходимо найти способ вычисления S+ на основе S. Первая попыт­ка решить эту проблему была предпринята в статье Армстронга (Armstrong) [10.1], в кото­рой автор предложил набор правил вывода новых функциональных зависимостей на ос­нове заданных (эти правила также называются аксиомами Армстронга). Правила вывода могут формулироваться разными способами, и самым простым из них является следующий. Пусть А, В и С — произвольные подмножества множества атрибутов заданной переменной-отношения R. Условимся также, что символическая запись АВ означает объе­динение множеств А и В. Тогда правила вывода определяются следующим образом.

  1. Правило рефлексивности: если множество В является подмножеством множества А, то А -> В.

  2. Правило дополнения: если А —> В, то АС —> ВС.

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

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

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

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

  1. Правило самоопределения: А —» А.

  2. Правило декомпозиции: если А —> ВС, то А —> В и А —» С.

  3. Правило объединения: если А —» В и А —> С, то А —> ВС.

  4. Правило композиции: если А —> В и С —» D, то АС —> BD.

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

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

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

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

А -> ВС В -> Е CD -> EF

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

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

Теперь можно показать, что для переменной-отношения R также выполняется функ­циональная зависимость AD —» F, которая вследствие этого принадлежит к замыканию заданного множества функциональных зависимостей.

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

  2. А -4 С (следует из п. 1 согласно правилу декомпозиции)

  3. AD —» CD (следует из п. 2 согласно правилу дополнения)

  1. CD ~> EF (дано)

  2. AD —> EF (следует из пп, 3 и 4 согласно правилу транзитивности)

  3. AD —> F (следует из п. 5 согласно правилу декомпозиции) |

Соседние файлы в папке Дейт К. Дж. Введение в системы баз данных [7 издание]