Введение в реляционные базы данных

         

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


Замыканием множества FD S является множество FD S+, включающее все FD, логически выводимые из FD множества S.

Для начала приведем два примера FD, из которых следуют (или выводятся) другие FD. Будем снова пользоваться отношением СЛУЖАЩИЕ_ПРОЕКТЫ. Для этого отношения выполняется, например, FD СЛУ_НОМ

Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
{СЛУ_ЗАРП, ПРО_НОМ}. Из этой FD выводятся FD СЛУ_НОМ
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
СЛУ_ЗАРП и СЛУ_НОМ
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
ПРО_НОМ.

В отношении СЛУЖАЩИЕ_ПРОЕКТЫ имеется также пара FD СЛУ_НОМ

Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
ПРО_НОМ и ПРО_НОМ
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
ПРОЕКТ_РУК. Из них выводится FD СЛУ_НОМ
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
ПРОЕКТ_РУК. Заметим, что FD вида СЛУ_НОМ
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
ПРОЕКТ_РУК называются транзитивными, поскольку ПРОЕКТ_РУК зависит от СЛУ_НОМ "транзитивно", через ПРО_НОМ.

FD A

Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
C называется транзитивной, если существует такой атрибут B, что имеются функциональные зависимости A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
B и B
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
C и отсутствует функциональная зависимость C
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
A.

Подход к решению проблемы поиска замыкания S+ множества FD S впервые предложил Вильям Армстронг1). Им был предложен набор правил вывода новых FD из существующих (эти правила обычно называют аксиомами Армстронга, хотя справедливость правил доказывается на основе определения FD). Обычно принято формулировать эти правила вывода в следующей форме. Пусть A, B и C являются (в общем случае, составными) атрибутами отношения r. Множества A, B и C могут иметь непустое пересечение. Для краткости будем обозначать через AB A UNION B. Тогда:

  1. если B
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    A, то A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    B (рефлексивность);
  2. если A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    B, то AC
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BC (пополнение);
  3. если A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    B и B
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    C, то A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    C (транзитивность).

Истинность первой аксиомы Армстронга следует из того, что при B

Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
A FD A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
B является тривиальной.

Справедливость второй аксиомы докажем от противного. Предположим, что FD AC

Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
BC не соблюдается. Это означает, что в некотором допустимом теле отношения найдутся два кортежа t1 и t2, такие, что t1 {AC} = t2 {AC} (a), но t1 {BC}
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
t2 {BC} (b) (здесь t {A} обозначает проекцию кортежа t на множество атрибутов A). По аксиоме рефлексивности из равенства (a) следует, что t1 {A} = t2 {A}. Поскольку имеется FD A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
B, должно соблюдаться равенство t1 {B} = t2 {B}.


Тогда из неравенства (b) следует, что t1 {C}
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
t2 {C}, что противоречит наличию тривиальной FD AC
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
C. Следовательно, предположение об отсутствии FD AC
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
BC не является верным, и справедливость второй аксиомы доказана.

Аналогично докажем истинность третьей аксиомы Армстронга. Предположим, что FD A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
C не соблюдается. Это означает, что в некотором допустимом теле отношения найдутся два кортежа t1 и t2, такие, что t1 {A} = t2 {A}, но t1 {C}
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
t2 {C}. Но из наличия FD A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
B следует, что t1 {B} = t2 {B}, а потому из наличия FD B
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
C следует, что t1 {C} = t2 {C}. Следовательно, предположение об отсутствии FD A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
C не является верным, и справедливость третьей аксиомы доказана.

Можно доказать, что система правил вывода Армстронга полна и совершенна (sound and complete) в том смысле, что для данного множества FD S любая FD, потенциально выводимая из S, может быть выведена на основе аксиом Армстронга, и применение этих аксиом не может привести к выводу лишней FD. Тем не менее Дейт по практическим соображениям предложил расширить базовый набор правил вывода еще пятью правилами:

  1. A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    A (самодетерминированность) – прямо следует из правила (1);
  2. если A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BC, то A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    B и A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    C (декомпозиция) – из правила (1) следует, что BC
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    B; по правилу (3) A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    B; аналогично, из BC
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    С и правила (3) следует A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    C;
  3. если A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    B и A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    C, то A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BC (объединение) – из правила (2) следует, что A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    AB и AB
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BC; из правила (3) следует, что A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BC;
  4. если A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    B и C
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    D, то AC
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BD (композиция) – из правила (2) следует, что AС
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BС и BC
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BD; из правила (3) следует, что AC
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BD;
  5. если A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BC и B
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    D, то A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BCD (накопление) – из правила (2) следует, что BС
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BCD; из правила (3) следует, что A
    Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
    BCD.


Пусть заданы отношение r, множество Z атрибутов этого отношения (подмножество заголовка r, или составной атрибут r) и некоторое множество FD S, выполняемых для r. Тогда замыканием Z над S называется наибольшее множество Z+ таких атрибутов Y отношения r, что FD Z
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
Y входит в S+.

Алгоритм вычисления Z+ очень прост. Один из его вариантов показан на рис. 6.2.

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



Рис. 6.2.  Алгоритм построения замыкания атрибутов над заданным множеством FD

Докажем корректность алгоритма по индукции. На нулевом шаге Z[0] = Z, FD Z
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
Z[I], очевидно, принадлежит S+ (тривиальная FD "выводится" из любого множества FD). Пусть для некоторого K выполняется FD Z
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
Z[K], и пусть мы нашли в S такую FD A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
B, что A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
Z[K]. Тогда можно представить Z[K] в виде AC, и, следовательно, выполняется FD Z
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
AC. Но по правилу (8) мы имеем FD Z
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
ACB, т.е. FD Z
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
(Z[K] UNION B) входит во множество S+, что переводит нас на следующий шаг индукции.

Пусть для примера имеется отношение с заголовком {A, B, C, D, E, F} и заданным множеством FD S = {A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
D, AB
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
E, BF
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
E, CD
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
F, E
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
C}. Пусть требуется найти {AE}+ над S. На первом проходе тела цикла DO Z[1] равно AE. В теле цикла FOR EACH будут найдены FD A
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
D и E
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
C, и в конце цикла Z[1] станет равным ACDE. На втором проходе тела цикла DO при Z[2], равном ACDE, в теле цикла FOR EACH будет найдена FD CD
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
F, и в конце цикла Z[2] станет равным ACDEF. Следующий проход тела цикла DO не изменит Z[3], и Z+ ({AE}+) будет равно ACDEF.

Алгоритм построения замыкания множества атрибутов Z над заданным множеством FD S помогает легко установить, входит ли заданная FD Z
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
B в замыкание S+. Очевидно, что необходимым и достаточным условием для этого является B
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
Z+, т. е. вхождение составного атрибута B в замыкание Z2).

Суперключом отношения r называется любое подмножество K заголовка r, включающее, по меньшей мере, хотя бы один возможный ключ r.

Одно из следствий этого определения состоит в том, что подмножество K заголовка отношения r является суперключом тогда и только тогда, когда для любого атрибута A (возможно, составного) заголовка отношения r выполняется FD K
Замыкание множества функциональных зависимостей. Аксиомы Армстронга. Замыкание множества атрибутов
A. В терминах замыкания множества атрибутов K является суперключом тогда и только тогда, когда K+ совпадает с заголовком r.


Содержание  Назад  Вперед