-
Notifications
You must be signed in to change notification settings - Fork 2
6. Проектирование реляционных баз данных на основе принципов нормализации: функциональные зависимости
Функциональная зависимость – А функционально определяет В (В функционально зависит от В) тогда и только тогда, когда для любых двух кортежей 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
Применяя избыточные правила, можно получить замыкание заданного множества функциональных зависимостей.
Неприводимое (минимальное в нормальной форме) покрытие : правая часть всегда одноэлементна; левая часть неприводима; нет лишних зависимостей (минимальное – объединяем зависимости с одинаковой левой частью).