Skip to content

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

Pandas edited this page Jan 7, 2018 · 1 revision

Функциональная зависимость – А функционально определяет В (В функционально зависит от В) тогда и только тогда, когда для любых двух кортежей T1,T2 отношение r над схемой R из равенства t1[A]=t2[A] следует t1[B]=t2[B].

Функциональная зависимость - это связь типа многие к одному между двумя множествами атрибутов заданной переменной-отнощения. Для заданной переменной-отнощения R зависимость А -> В (где А и В являются подмножествами множества атрибутов переменной-отнощения R) выполняется для переменной-отнощения R тогда и только тогда, когда любые два кортежа переменной-отнощения R с одинаковыми значениями атрибутов множества А имеют одинаковые значения атрибутов множества В.

Аксиомы Армстронга можно использовать при первой попытке получения множества функциональных зависимостей относительно заданного множества.

  • 1: правило рефлексивности. Если B ⊆ A => A → B (→ функциональная зависимость).
  • 2: дополнение. A → B => AC → BC, где С – новый атрибут в пределах данной схемы. АС, BC – объединение множеств.
  • 3: транзитивность. A → B, B → C=> A → C.

Существует доказательство этих правил из определения функциональных зависимостей.

Набор правил Армстронга является полным – для заданного множества ФЗ минимальный набор может быть выведен только с помощью этих трех правил; является исчерпывающим – в результате применений этих ФЗ никакие дополнительные ФЗ не могут быть получены. Тем не менее, набор был дополнен.

  • 4: самоопределение. A → A
  • 5: декомпозиция. A → BC => A → B, A → C
  • 6: объединение. A → B, A → C => A → BC
  • 7: композиция. A → B, C → D => AB → CD
  • 8: правило унификации (общая теорема определения). A → B, C → D => A(C-B) → CD

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

Неприводимое (минимальное в нормальной форме) покрытие : правая часть всегда одноэлементна; левая часть неприводима; нет лишних зависимостей (минимальное – объединяем зависимости с одинаковой левой частью).

Clone this wiki locally