Функциональные зависимости и их свойства

Для объединения множеств атрибутов употребляются следующие обозначения:

если наименование атрибута имеет смысл, то вместо знака объединения ставится один пробел;

если атрибут обозначается произвольной латинской буквой, то знак объединения не ставится; запись XY эквивалентна X Функциональные зависимости и их свойства - student2.ru Y.

Множество атрибутов Y функционально зависит от множества атрибутов X, где X, Y Функциональные зависимости и их свойства - student2.ru {A12,...,An}, если значения атрибутов в X единственным образом определяют значения атрибутов Y. В этом случае говорят, что между множествами атрибутов X и Y существует функциональная зависимость (F-зависимость), или X определяет Y; обозначают F : X Функциональные зависимости и их свойства - student2.ru Y или просто X Функциональные зависимости и их свойства - student2.ru Y.

Пример 3.1. Рассмотрим отношение ПОСТАВКИ (ПОСТАВЩИК, ГОРОД, ТОВАР, КОЛИЧЕСТВО). На значения атрибутов этого отношения накладываются следующие ограничения:

1) Осуществлять поставку данного товара в данном количестве из определенного города может только один поставщик;

2) Некоторый поставщик из данного города и в данном количестве может осуществлять поставку только одного товара;

Перечисленные ограничения являются F-зависимостями и их можно записать так:

1) ТОВАР ГОРОД КОЛИЧЕСТВО Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК

2) ГОРОД ПОСТАВЩИК КОЛИЧЕСТВО Функциональные зависимости и их свойства - student2.ru ТОВАР

Пусть R(A12,...,An) — схема отношения, X и Y — подмножества атрибутов. Будем говорить, что отношение R удовлетворяет F-зависимости X Функциональные зависимости и их свойства - student2.ru Y, если для любых кортежей t1,t2 Функциональные зависимости и их свойства - student2.ru R из t1(X)=t2(X) следует t1(Y)= t2(Y). В F-зависимости X Функциональные зависимости и их свойства - student2.ru Y подмножество X называется левой, а Y — правой частью.

Такая интерпретация F-зависимости является основой алгоритма ЗАВИСИМОСТЬ.

Вход. Отношение R и F-зависимость X Функциональные зависимости и их свойства - student2.ru Y.

Выход. Истина, если R удовлетворяет X Функциональные зависимости и их свойства - student2.ru Y, в противном случае — ложь.

Шаг 1. Сортировать отношение R по Х-столбцам так, чтобы собрать кортежи с равными X-значениями.

Шаг 2. Если каждая совокупность кортежей с равными X-значениями имеет также равные Y-значения, то на выходе получаем истину, в противном случае — ложь.

F-зависимостыо X Функциональные зависимости и их свойства - student2.ru Y на множестве атрибутов А можно считать упорядоченную пару (X,Y), где X,Y Функциональные зависимости и их свойства - student2.ru A. Тогда множеством всех функциональных зависимостей над А будет L={(X, Y)| X Функциональные зависимости и их свойства - student2.ru A, Y Функциональные зависимости и их свойства - student2.ru A}.

Если Y не зависит от X, то записывают X Функциональные зависимости и их свойства - student2.ru Y. Если X Функциональные зависимости и их свойства - student2.ru Y и Y Функциональные зависимости и их свойства - student2.ru X, то X и Y называют эквивалентными или говорят, что между X и Y существует биекция, т. е. X Функциональные зависимости и их свойства - student2.ru Y.

Пример 3.2. Пусть поставщик осуществляет поставки ТОВАРА, определенное КОЛИЧЕСТВО. Он находится в ГОРОДЕ и определенной СТРАНЕ. Можно сформировать следующие зависимости:

f1: ТОВАР Функциональные зависимости и их свойства - student2.ru КОЛИЧЕСТВО,

f2: ТОВАР Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК,

f3: ПОСТАВЩИК Функциональные зависимости и их свойства - student2.ru ГОРОД,

f4: ГОРОД Функциональные зависимости и их свойства - student2.ru СТРАНА,

f5: ТОВАР Функциональные зависимости и их свойства - student2.ru СТРАНА.

Аксиомы вывода

Для различных состояний отношения R(A) могут существовать разные совокупности F-зависимостей. Интерес представляет выявление множества F-зависимостей F, которым удовлетворяют все допустимые состояния R(A). Для этого нужно знать семантические связи между атрибутами отношения. Такое множество F-зависимостей можно считать заданным в схеме отношения R(A). В подобном случае любое отношение со схемой R(A) должно удовлетворять всем F-зависимостям из F. Данное множество F конечно, так как существует только конечное число подмножеств множества А. Одним из способов его нахождения является использование алгоритма ЗАВИСИМОСТЬ, что требует много времени. Другим способом являются аксиомы вывода — правила, позволяющие на основании данного множества F-зависимостей получить все F-зависимости, которым удовлетворяет отношение R(A). Рассмотрим эти аксиомы.

Пусть X, Y, Z, W — непустые подмножества множества A={A12,...,An}. Тогда для любого отношения со схемой R(A) справедливы следующие аксиомы вывода.

F1. Рефлексивность: Х Функциональные зависимости и их свойства - student2.ru Х.

F2. Транзитивность: если X Функциональные зависимости и их свойства - student2.ru Y и Y Функциональные зависимости и их свойства - student2.ru Z, то X Функциональные зависимости и их свойства - student2.ru Z.

F3. Пополнение: если X Функциональные зависимости и их свойства - student2.ru Y, то XZ Функциональные зависимости и их свойства - student2.ru Y.

F4. Псевдотранзитивность: если X Функциональные зависимости и их свойства - student2.ru Y и YZ Функциональные зависимости и их свойства - student2.ru W, то XZ Функциональные зависимости и их свойства - student2.ru W.

F5. Аддитивность: если X Функциональные зависимости и их свойства - student2.ru Y и X Функциональные зависимости и их свойства - student2.ru Z, то X Функциональные зависимости и их свойства - student2.ru YZ.

F6. Проективность: если X Функциональные зависимости и их свойства - student2.ru FZ, то X Функциональные зависимости и их свойства - student2.ru Y или Х Функциональные зависимости и их свойства - student2.ru Z.

Рассмотрим сформулированные аксиомы на примере отношения R, включающего атрибуты: X — ТОВАР, У — ПОСТАВЩИК, Z — ГОРОД, W — СТРАНА.

F1. Рефлексивность. Отношение πX( Функциональные зависимости и их свойства - student2.ru X=x(R)) всегда имеет не более одного кортежа. Следовательно, Х Функциональные зависимости и их свойства - student2.ru Х всегда истинно в R. Например, ТОВАР Функциональные зависимости и их свойства - student2.ru ТОВАР.

F2. Транзитивность. Пусть t1 и t2 — кортежи в R. Если t1(X) = t2(X), то t1(Y) = t2(Y), а из t1(Y) = t2(Y) вытекает t1(Z) = t2(Z). Таким образом, если

t1(X) = t2(X), то t1(Z) = t2(Z), т. е. R удовлетворяет X Функциональные зависимости и их свойства - student2.ru Z. Например, если ТОВАР Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК и ПОСТАВЩИК Функциональные зависимости и их свойства - student2.ru ГОРОД, то ТОВАР Функциональные зависимости и их свойства - student2.ru ГОРОД.

F3. Пополнение. Эта аксиома позволяет расширить левую часть F-зависимости. Если R удовлетворяет X Функциональные зависимости и их свойства - student2.ru Y, то πY( Функциональные зависимости и их свойства - student2.ru X=x(R)) имеет не более одного кортежа для любого х Функциональные зависимости и их свойства - student2.ru Х. Если L Функциональные зависимости и их свойства - student2.ru R, то Функциональные зависимости и их свойства - student2.ru XZ=xz(R) Функциональные зависимости и их свойства - student2.ru Функциональные зависимости и их свойства - student2.ru X=x(R) и, следовательно, πY( Функциональные зависимости и их свойства - student2.ru XZ=xz(R)) Функциональные зависимости и их свойства - student2.ru πY( Функциональные зависимости и их свойства - student2.ru X=x(R)). Таким образом, πY( Функциональные зависимости и их свойства - student2.ru XZ=xz(R)) имеет максимум один кортеж и R должно удовлетворять F-зависимости XZ Функциональные зависимости и их свойства - student2.ru Y. Например, если ТОВАР Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК, то ТОВАР ГОРОД Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК.

F4. Псевдотранзитивность. Пусть t1 и t2 — кортежи в R. По условию если t1(X) = t2(X), то t1(Y) = t2(Y), и аналогично, если t1(YZ) = t2(YZ), то t1(W) = t2(W). Из t1(XZ) = t2(XZ) получаем, что t1(X) = t2(X). Значит, t1(Y) = t2(Y) и, кроме того, t1(YZ) = t2(YZ), откуда следует, что t1(W) = t2(W). Таким образом, R удовлетворяет XZ Функциональные зависимости и их свойства - student2.ru W. Например, если ТОВАР Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК и ПОСТАВЩИК ГОРОД Функциональные зависимости и их свойства - student2.ru СТРАНА, то ТОВАР ГОРОД Функциональные зависимости и их свойства - student2.ru СТРАНА.

F5. Аддитивность. Эта аксиома позволяет объединить две F-зависимости с одинаковыми левыми частями. Из X Функциональные зависимости и их свойства - student2.ru Y и X Функциональные зависимости и их свойства - student2.ru Z следует, что πY( Функциональные зависимости и их свойства - student2.ru X=x(R)) и πZ( Функциональные зависимости и их свойства - student2.ru X=x(R)) имеют не более одного кортежа для любого х Функциональные зависимости и их свойства - student2.ru Х. Если бы отношение πYZ( Функциональные зависимости и их свойства - student2.ru X=x(R)) имело более одного кортежа, то по крайней мере одно из отношений πY( Функциональные зависимости и их свойства - student2.ru X=x(R)) или πZ( Функциональные зависимости и их свойства - student2.ru X=x(R)) имело бы более одного кортежа. Таким образом, R удовлетворяет F-зависимости X Функциональные зависимости и их свойства - student2.ru YZ. Например, если ТОВАР Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК и ТОВАР Функциональные зависимости и их свойства - student2.ru ГОРОД, то ТОВАР Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК ГОРОД.

F6. Проективность. Эта аксиома в некоторой степени обратна аксиоме аддитивности. Если R удовлетворяет Х Функциональные зависимости и их свойства - student2.ru YZ, то πYZ( Функциональные зависимости и их свойства - student2.ru X=x(R)) имеет не более одного кортежа для любого х Функциональные зависимости и их свойства - student2.ru Х. Так как πYYZ( Функциональные зависимости и их свойства - student2.ru X=x(R))) = πY( Функциональные зависимости и их свойства - student2.ru X=x(R)), то πY( Функциональные зависимости и их свойства - student2.ru X=x(R)) также может иметь не более одного кортежа. Следовательно, R удовлетворяет Х Функциональные зависимости и их свойства - student2.ru У. Например, если ТОВАР Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК ГОРОД, то ТОВАР Функциональные зависимости и их свойства - student2.ru ПОСТАВЩИК или ТОВАР Функциональные зависимости и их свойства - student2.ru ГОРОД.

Некоторые аксиомы вывода могут быть получены из других аксиом. Например, транзитивность F2 является частным случаем псевдотранзитивности F4 при Z = Функциональные зависимости и их свойства - student2.ru . Аксиома F4 выводится из F1...F3 и F5; если X Функциональные зависимости и их свойства - student2.ru Y и YZ Функциональные зависимости и их свойства - student2.ru W, то, как следствие, F1, Z Функциональные зависимости и их свойства - student2.ru Z. Согласно F3 имеем XZ Функциональные зависимости и их свойства - student2.ru Y и XZ Функциональные зависимости и их свойства - student2.ru Z. Используя F5, получаем XZ Функциональные зависимости и их свойства - student2.ru YZ. Наконец, применяя F2, имеем XZ Функциональные зависимости и их свойства - student2.ru W.

С помощью аксиом F1, F3 и F4 можно вывести аксиомы F2, F5 и F6. Как было сказано, F2 является частным случаем F4. Если X Функциональные зависимости и их свойства - student2.ru Y и X Функциональные зависимости и их свойства - student2.ru Z, то из F1 получаем YZ Функциональные зависимости и их свойства - student2.ru YZ и, дважды применяя F4, сначала получаем XZ Функциональные зависимости и их свойства - student2.ru YZ, а затем X Функциональные зависимости и их свойства - student2.ru YZ. Поэтому F5 следует из F1, F3 и F4. Для доказательства F6 предположим, что X Функциональные зависимости и их свойства - student2.ru YZ. Из F1 имеем Y Функциональные зависимости и их свойства - student2.ru Y, а из F3 получаем YZ Функциональные зависимости и их свойства - student2.ru Y. Применение F4 дает X Функциональные зависимости и их свойства - student2.ru Y.

Таким образом, аксиомы F1, F3 и F4 составляют полное подмножество для F1...F6 и являются независимыми в том смысле, что ни одна из аксиом не может быть получена из двух других. Аксиомы F1, F3 и F4 иногда называют аксиомами Армстронга.

Система аксиом F1...F6 является полной, т.е. путем одно- или многократного применения к F этих аксиом можно получить любую F-зависимость, которая следует из множества F.

Множество функциональных зависимостей F={f1,f2,...,fm}, находится в приведенной канонической форме, если F-зависимости не имеют одинаковых левых частей. Для таких функциональных зависимостей если Xi Функциональные зависимости и их свойства - student2.ru Yi и Xi Функциональные зависимости и их свойства - student2.ru Yj, то Xi Функциональные зависимости и их свойства - student2.ru Yi Функциональные зависимости и их свойства - student2.ru Yj. Например, приведенной канонической формой для F={f1,f2, f3} из примера 3.2 будет:

ТОВАР Функциональные зависимости и их свойства - student2.ru КОЛИЧЕСТВО ПОСТАВЩИК СТРАНА.

Замыкания

Пусть F= {Xi Функциональные зависимости и их свойства - student2.ru Yi}, 1≤ i ≤n, — множество функциональных зависимостей. Замыканием множества F называют множество F+, содержащее все те зависимости, которые могут быть получены применением к F аксиом Армстронга. Замыкание множества функциональных зависимостей используется для определения биекций и ликвидации избыточности множества функциональных зависимостей.

Пример 3.3. Пусть F = {АВ Функциональные зависимости и их свойства - student2.ru С, С Функциональные зависимости и их свойства - student2.ru В} — множество F-зависимостей на R(A, В, С). Тогда F+ = {А Функциональные зависимости и их свойства - student2.ru А, AB Функциональные зависимости и их свойства - student2.ru А, АС Функциональные зависимости и их свойства - student2.ru A, АВС Функциональные зависимости и их свойства - student2.ru А, В Функциональные зависимости и их свойства - student2.ru В, АВ Функциональные зависимости и их свойства - student2.ru B, ВС Функциональные зависимости и их свойства - student2.ru В, ABC Функциональные зависимости и их свойства - student2.ru В, С Функциональные зависимости и их свойства - student2.ru С, АС Функциональные зависимости и их свойства - student2.ru С, ВС Функциональные зависимости и их свойства - student2.ru С, ABC Функциональные зависимости и их свойства - student2.ru С, АВ Функциональные зависимости и их свойства - student2.ru АВ, ABC Функциональные зависимости и их свойства - student2.ru АВ, АС Функциональные зависимости и их свойства - student2.ru AC, ABC Функциональные зависимости и их свойства - student2.ru АС, ВС Функциональные зависимости и их свойства - student2.ru ВС, ABC Функциональные зависимости и их свойства - student2.ru ВС, ABC Функциональные зависимости и их свойства - student2.ru ABC, АВ Функциональные зависимости и их свойства - student2.ru С, АВ Функциональные зависимости и их свойства - student2.ru АС, АВ Функциональные зависимости и их свойства - student2.ru ВС, AВ Функциональные зависимости и их свойства - student2.ru ABC, С Функциональные зависимости и их свойства - student2.ru В, С Функциональные зависимости и их свойства - student2.ru ВС, АС Функциональные зависимости и их свойства - student2.ru В, АС Функциональные зависимости и их свойства - student2.ru АВ}.

Вычисление F+ для множества зависимостей F является весьма трудоемкой задачей, так как множество зависимостей F+ может быть большим, даже если само F мало. Рассмотрим множество F = {A Функциональные зависимости и их свойства - student2.ru B1, A Функциональные зависимости и их свойства - student2.ru B2,..., A Функциональные зависимости и их свойства - student2.ru Bn}. Тогда F+ включает все зависимости A Функциональные зависимости и их свойства - student2.ru Y, где Y — подмножество множества {B1,B2,...,Bn}. Так как существует 2n таких подмножеств Y, то даже при небольших n их нелегко перечислить.

Более простым является вычисление замыкания атрибутов множества А относительно множества функциональных зависимостей F. Пусть F — множество функциональных зависимостей на множестве атрибутов U, а X — некоторое подмножество U. Тогда Х+ — замыкание X относительно F — есть множество атрибутов А таких, что зависимость Х Функциональные зависимости и их свойства - student2.ru A может быть выведена из F по аксиомам Армстронга. Замыкание X+ позволяет сразу определить, выводится ли зависимость X Функциональные зависимости и их свойства - student2.ru Y из F по аксиомам Армстронга. Существует следующая лемма.

Утверждение. Функциональная зависимость X Функциональные зависимости и их свойства - student2.ru Y выводится из аксиом Армстронга тогда и только тогда, когда Y Функциональные зависимости и их свойства - student2.ru Х+.

Рассмотрим алгоритм вычисления замыкания множества атрибутов U относительно множества функциональных зависимостей F.

Вход. Конечные множества: атрибутов U, зависимостей F и атрибутов X Функциональные зависимости и их свойства - student2.ru U.

Выход. Замыкание Х+ множества атрибутов X относительно F.

Вычисляем последовательность множеств атрибутов Х(0), Х(1),... по следующим правилам.

Шаг 1. Х(0) есть X.

Шаг 2. Хi+1 есть Xi плюс множество атрибутов А таких, что в F существует некоторая зависимость Y Функциональные зависимости и их свойства - student2.ru Z, А принадлежит Z и Y Функциональные зависимости и их свойства - student2.ru X(i) Поскольку Х = Х(0) Функциональные зависимости и их свойства - student2.ru Х(1) Функциональные зависимости и их свойства - student2.ru ... Функциональные зависимости и их свойства - student2.ru U и U конечно, в итоге достигнем такого i, что X(i) = X(i+1). Отсюда X(i) = X(i+1) =X(i+2) =... и поэтому процесс вычисления Х+ прекращается, если X(i) = X(i+1).

Пример 3.4. Пусть F состоит из следующих зависимостей:

АВ Функциональные зависимости и их свойства - student2.ru С, AE Функциональные зависимости и их свойства - student2.ru G,

ВС Функциональные зависимости и их свойства - student2.ru D, D Функциональные зависимости и их свойства - student2.ru EC,

В Функциональные зависимости и их свойства - student2.ru АЕ, EG Функциональные зависимости и их свойства - student2.ru K,

а Х=АВ. Используя алгоритм, получаем Х(0)=Х=АВ. Для вычисления Х(1) находим зависимости, которые имеют в левой части А, В или АВ. Во множестве F существуют две зависимости: АВ Функциональные зависимости и их свойства - student2.ru С и В Функциональные зависимости и их свойства - student2.ru АЕ. Поэтому присоединяем С и E к Х(0) получаем Х(1) =АВСЕ. Затем вычисляем Х(2) путем поиска левых частей зависимостей F, содержащихся в Х(1). Находим BC Функциональные зависимости и их свойства - student2.ru D и AE Функциональные зависимости и их свойства - student2.ru G. Таким образом, Х(2)=ABCDEG. Далее находим EG Функциональные зависимости и их свойства - student2.ru K, D Функциональные зависимости и их свойства - student2.ru G и, наконец, Х(3)=ABCDEGK — множество всех атрибутов. Следовательно, Х(3)= Х(4)= ... . Итак, получаем (AB)+=ABCDEGK.

Пусть задано отношение R на множестве атрибутов {A12,...,An}, Множество атрибутов К называется ключом отношения R (первичным ключом), если каждый атрибут Ai Функциональные зависимости и их свойства - student2.ru {A12,...,An},, который не входит в К, функционально зависит от К, т. е. К Функциональные зависимости и их свойства - student2.ru Ai; и никакое подмножество К не удовлетворяет этому свойству. В дальнейшем ключевые атрибуты в схемах отношений будут подчеркиваться.

Пример 3.5. В функциональной зависимости ТОВАР ДАТА КОЛИЧЕСТВО Функциональные зависимости и их свойства - student2.ru ГОРОД ПОСТАВЩИК ключом является (ТОВАР ДАТА КОЛИЧЕСТВО).

Два множества F-зависимостей F и G над схемой отношения R эквивалентны, F ≡G, если F+ = G+. Если F ≡G, то F есть покрытие для G.

Пример 3.6. Множества F={A Функциональные зависимости и их свойства - student2.ru BC, A Функциональные зависимости и их свойства - student2.ru D, CD Функциональные зависимости и их свойства - student2.ru E} и G={А Функциональные зависимости и их свойства - student2.ru ВСЕ, A Функциональные зависимости и их свойства - student2.ru ABD, CD Функциональные зависимости и их свойства - student2.ru E} эквивалентны. Множество F не эквивалентно множеству G'={A Функциональные зависимости и их свойства - student2.ru BCDE}, поскольку зависимость CD Функциональные зависимости и их свойства - student2.ru E не выводится в G'.

Множество F-зависимостей F неизбыточно, если у него нет такого собственного подмножества F' что F'≡F. Если такое подмножество F' существует, то F избыточно.

Пример 3.7. Множество F={АВ Функциональные зависимости и их свойства - student2.ru С, А Функциональные зависимости и их свойства - student2.ru ВС, А Функциональные зависимости и их свойства - student2.ru В, В Функциональные зависимости и их свойства - student2.ru С} избыточно, так как есть подмножество F'={A Функциональные зависимости и их свойства - student2.ru B, B Функциональные зависимости и их свойства - student2.ru C}, которое эквивалентно F.

Пусть имеется множество функциональных зависимостей F={Xi Функциональные зависимости и их свойства - student2.ru Yi}, i = Функциональные зависимости и их свойства - student2.ru . Множество атрибутов Zi Функциональные зависимости и их свойства - student2.ru Xi называют посторонним в Xi, если Xi Функциональные зависимости и их свойства - student2.ru Zi Функциональные зависимости и их свойства - student2.ru Yi может быть получено в замыкании F+.

Пример 3.8. В примере 3.2 комбинация атрибутов ТОВАР и ПОСТАВЩИК определяет атрибут ГОРОД, т. е. f3 может заменить зависимость

ТОВАР ПОСТАВЩИК Функциональные зависимости и их свойства - student2.ru ГОРОД.

Из f2 видно, что атрибут ПОСТАВЩИК с левой стороны является посторонним.

Множество F-зависимостей F называют минимальным, если оно содержит не больше F-зависимостей, чем любое эквивалентное множество F-зависимостей.

Минимальное множество F-зависимостей не может содержать избыточных зависимостей. Таким образом, оно одновременно и неизбыточно.

Пример 3.9. Множество G={A Функциональные зависимости и их свойства - student2.ru BC, B Функциональные зависимости и их свойства - student2.ru A, AD Функциональные зависимости и их свойства - student2.ru E, BD Функциональные зависимости и их свойства - student2.ru L} неизбыточно, но не минимально, поскольку существует множество F={A Функциональные зависимости и их свойства - student2.ru BC, B Функциональные зависимости и их свойства - student2.ru A, AD Функциональные зависимости и их свойства - student2.ru EL}, которое эквивалентно G и содержит меньшее число F-зависимостей. Множество F является минимальным покрытием G.

При проектировании схем БД для минимального покрытия множества F-зависимостей полезно использовать следующие ограничения:

1) правая часть каждой F-зависимости содержит единственный атрибут;

2) ни для какой F-зависимости Х Функциональные зависимости и их свойства - student2.ru А в F множество F—(Х Функциональные зависимости и их свойства - student2.ru А) не эквивалентно F;

3) ни для какой F-зависимости Х Функциональные зависимости и их свойства - student2.ru А в F и собственного подмножества Z Функциональные зависимости и их свойства - student2.ru X множества F—(X Функциональные зависимости и их свойства - student2.ru A) Функциональные зависимости и их свойства - student2.ru (Z Функциональные зависимости и их свойства - student2.ru A) и F не эквивалентны.

Пример 3.10. Пусть F состоит из таких F-зависимостей:

AB Функциональные зависимости и их свойства - student2.ru C, ACD Функциональные зависимости и их свойства - student2.ru B, CG Функциональные зависимости и их свойства - student2.ru BD,

C Функциональные зависимости и их свойства - student2.ru A, D Функциональные зависимости и их свойства - student2.ru EG, CE Функциональные зависимости и их свойства - student2.ru AG,

BC Функциональные зависимости и их свойства - student2.ru D, BE Функциональные зависимости и их свойства - student2.ru C,

Используя условие 1), получаем

АВ Функциональные зависимости и их свойства - student2.ru C, D Функциональные зависимости и их свойства - student2.ru Е, CG Функциональные зависимости и их свойства - student2.ru B,

С Функциональные зависимости и их свойства - student2.ru A, D Функциональные зависимости и их свойства - student2.ru G, CG Функциональные зависимости и их свойства - student2.ru D,

ВС Функциональные зависимости и их свойства - student2.ru D, BE Функциональные зависимости и их свойства - student2.ru C, СЕ Функциональные зависимости и их свойства - student2.ru A,

ACD Функциональные зависимости и их свойства - student2.ru В, СЕ Функциональные зависимости и их свойства - student2.ru G.

Здесь F-зависимость СЕ Функциональные зависимости и их свойства - student2.ru А избыточна, поскольку она следует из зависимости С Функциональные зависимости и их свойства - student2.ru А. Подобным образом избыточна F-зависимость CG Функциональные зависимости и их свойства - student2.ru B, так как из CG Функциональные зависимости и их свойства - student2.ru D, С Функциональные зависимости и их свойства - student2.ru А и ACD Функциональные зависимости и их свойства - student2.ru B получаем CG Функциональные зависимости и их свойства - student2.ru B. Никакие другие F-зависимости не являются избыточными. Однако ACD Функциональные зависимости и их свойства - student2.ru B может быть замещена зависимостью CD Функциональные зависимости и их свойства - student2.ru B, поскольку С Функциональные зависимости и их свойства - student2.ru А. Таким образом, минимальное покрытие включает следующие F-зависимости:

AB Функциональные зависимости и их свойства - student2.ru C, CD Функциональные зависимости и их свойства - student2.ru B, BE Функциональные зависимости и их свойства - student2.ru C,

C Функциональные зависимости и их свойства - student2.ru A, D Функциональные зависимости и их свойства - student2.ru E, CG Функциональные зависимости и их свойства - student2.ru D,

BC Функциональные зависимости и их свойства - student2.ru D, D Функциональные зависимости и их свойства - student2.ru G, CE Функциональные зависимости и их свойства - student2.ru G.

Другое минимальное покрытие, построенное из F исключением СЕ Функциональные зависимости и их свойства - student2.ru А, CG Функциональные зависимости и их свойства - student2.ru D и АСD Функциональные зависимости и их свойства - student2.ru B, имеет вид

AB Функциональные зависимости и их свойства - student2.ru C, D Функциональные зависимости и их свойства - student2.ru E, CG Функциональные зависимости и их свойства - student2.ru B,

C Функциональные зависимости и их свойства - student2.ru A, D Функциональные зависимости и их свойства - student2.ru G, CE Функциональные зависимости и их свойства - student2.ru G.

B Функциональные зависимости и их свойства - student2.ru CD, BE Функциональные зависимости и их свойства - student2.ru C,

Отметим, что эти два минимальных покрытия имеют разное число зависимостей.

Более короткое представление множества F является предпочтительным: во-первых, потому, что от мощности F зависит временная сложность алгоритмов для обработки этого множества; во-вторых, объем используемой памяти и число операций при модификации БД также определяются числом F-зависимостей.

Нормализация отношений

Одной из важных и сложных проблем процесса проектирования реляционных схем БД является выбор оптимальной структуры кортежа отношения. Из множества группировок атрибутов необходимо выбрать наиболее рациональную структуру кортежа, устойчивую при изменении как данных, так и связей между ними.

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

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

Рассмотрим процесс нормализации отношений на примере связей поставщиков и произведенных ими поставок, используя следующие функциональные зависимости:

f1 : ПК Функциональные зависимости и их свойства - student2.ru ФС ГРД СТС ТР

f2 : НП Функциональные зависимости и их свойства - student2.ru КО ОС

f3 : ПК НП Функциональные зависимости и их свойства - student2.ru ОС

f4 : ТР Функциональные зависимости и их свойства - student2.ru СТС

В этих зависимостях ПК и ФС — соответственно поставщик и форма собственности; ГРД — город, где располагается головной офис; ТР и СТС — соответственно товар, получаемый от поставщика и статус; НП, КО и СЕ — соответственно номер поставки, количество и стоимость единицы товара; ОС — общая стоимость поставки.

На основании подобных зависимостей можно составить такие схемы отношений:

С(ПК, ФС, ГРД, СТС, ТР),

П(НП, КО, СЕ),

СП (ПК, НП, ОС).

Рассмотрим схему отношения

СПЧ (ПК, НП, СТС, ТР, ОС)

и соответствующее отношение (табл. 3.1). Его первичным ключом является ПК НП, при этом атрибут СТС зависит от атрибута ТР. Отношение СПЧ можно представить в виде схемы (рис. 3.1), где атрибуты СТС и ТР функционально не полностью зависят от первичного ключа и не являются взаимно независимыми.

Таблица 3.1. Ненормализованное отношение СПЧ

ПК НП СТС ТР ОС
п1 з1, з6 т1 10, 10
п2 з1 т1
п3 з2, з8, з9 т1 10, 5, 5
п4 з2 т2
п5 з3, з8 т2 10, 10

Первая нормальная форма

Отношение R находится в первой нормальной форме (1НФ), если все входящие в него атрибуты имеют атомарные (неделимые) значения. Другими словами, значения в доменах отношения не являются ни списками, ни множествами простых

Отношение СПЧ (табл. 3.1) не удовлетворяет этому требованию, и его нужно нормализовать так, чтобы каждый элемент табл. 3.1 был единственным значением. В результате получаем табл. 3.2. При использовании операций запоминания (ВКЛЮЧИТЬ, УДАЛИТЬ, ОБНОВИТЬ) отношение СПЧ (табл. 3.2) имеет следующие недостатки.

ВКЛЮЧИТЬ. Невозможно ввести информацию о поставщике, статусе и товаре, который он поставляет, пока за поставщиком не будет закреплены данные о произведенных поставках. Это связано с тем, что каждый компонент первичного ключа должен иметь значение. В данном случае первичный ключ составляют атрибуты ПК, НП.

Функциональные зависимости и их свойства - student2.ru

Рис. 3.1. Функциональная зависимость в отношении СПЧ

Таблица 3.2. Нормализованное отношение СПЧ

ПК НП СТС ТР ОС
п1 з1 т1
п1 з6 т1
п2 з1 т1
п3 з2 т1
п3 з8 т1
п3 з9 т1
п4 з2 т2
п5 з3 т2
п5 з8 т2

Таблица 3.3. Отношение СТаблица 3.4. Отношение СП

ПК СТС ТР   ПК НП ОС
п1 с1 т1   п1 з1
п2 с1 т1   п1 з6
п3 с2 т1   п2 з1
п4 с4 т2   п3 з2
п5 с4 т2   п3 з8
        п3 з9
        п4 з2
        п5 з3
        п5 з8
               

УДАЛИТЬ. При удалении информации об общей стоимости произведенных поставок удаляется и остальная информация, находящаяся в кортеже.

ОБНОВИТЬ. Предположим, схема отношения содержит атрибут ГРД , в котором располагается поставщик. При переезде поставщика в другой город и необходимости изменить значение атрибута ГРД требуется просмотр всего отношения, а не отдельного кортежа, так как для одного поставщика может существовать множество кортежей.

Ликвидация перечисленных недостатков достигается заменой отношения СПЧ отношениями С (табл. 3.3) и СП (табл. 3.4) со схемами С (ПК, СТС, ТР) и СП (ПК, НП, ОС) (рис. 3.2).

Функциональные зависимости и их свойства - student2.ru

Рис. 3.2. Функциональные зависимости в отношениях С (а)и СП (б) связанные с операциями запоминания

ВКЛЮЧИТЬ. Можно ввести в отношение С информацию о поставщике, даже если за ним не закреплены данные о поставках.

УДАЛИТЬ. Можно из отношения СП исключить кортеж, содержащий информацию об общей стоимости произведенных поставок, не удаляя информации о самом поставщике.

ОБНОВИТЬ. Значение атрибута ГРД для данного поставщика будет встречаться лишь в отдельном кортеже отношения С и поэтому требуется лишь одно обновление.

Вторая нормальная форма

Перед тем как ввести эту форму, приведем определения.

Пусть R — схема отношения (с несколькими ключами). Атрибут А, принадлежащий некоторому ключу из R, называют ключевым (главным) в R, в противном случае А — неключевой атрибут. Например, в отношении С ключевой атрибут — ПК, а СТС и ТР — неключевые атрибуты.

Пусть Х Функциональные зависимости и их свойства - student2.ru А — F-зависимость. Атрибут А частично зависит от X, если А функционально зависит от некоторого подмножества У Функциональные зависимости и их свойства - student2.ru Х, т. е. У Функциональные зависимости и их свойства - student2.ru А: Атрибут А полностью зависит от X, если он не зависит от любого подмножества X.

Отношение R находится во второй нормальной форме (2НФ), если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от первичного ключа. Отношения С и СП представлены в 2НФ. Их первичными ключами являются соответственно ПК и ПКНП. Отношение СПЧ не находится в 2НФ.

Сравнение рис. 3.1 и 3.2 показывает, что результатом проведенного преобразования является устранение неполной функциональной зависимости, что и ликвидирует все недостатки. В отношении СПЧ зависимые атрибуты СТС и ТР не определяют общей стоимости всех произведенных поставок. Смешением двух типов информации в одном отношении и объясняются перечисленные выше недостатки.

Отношение, находящееся в 1НФ и не представленное в 2НФ, всегда можно преобразовать в эквивалентную совокупность отношений, представленных в 2НФ. Преобразование заключается в замене отношения совокупностью его проекций, естественное соединение которых дает исходное отношение. При таком преобразовании информация не теряется и процесс является обратимым. Отношение в нашем примере, представленное в 1НФ, а не в 2НФ, имеет составной первичный ключ; любую информацию из исходного отношения можно получить и из преобразованного отношения. Более того, новая структура может содержать данные, которые нельзя представить в исходном отношении (например, информацию о поставщике, не имеюшем совершенных поставок).

Заметим, однако, что отношению, представленному в 2НФ, а не в третьей и четвертой нормальных формах (как отношение СП), присущи недостатки. Так, в отношении С имеется зависимость между атрибутами СТС и ТР, т.е. каждое значение ПК определяет значение СТС, которое в свою очередь определяет значение ТР. Другими словами, существует транзитивная зависимость между атрибутами ПК, СТС и ТР, а это опять приводит к трудностям в выполнении операций запоминания. Рассмотрим недостатки, встречающиеся при выполнении названных операций.

ВКЛЮЧИТЬ. Невозможно указать в отношении С, что некоторое значение ТР определяет значение СТС, если отсутствует значение ПК (т.е. первичный ключ), от которого зависит значение ТР.

УДАЛИТЬ. Удаление кортежа с некоторым значением СТС влечет за собой не только исключение значения ПК, но и того факта, что значение ТР определяет значение СТС.

ОБНОВИТЬ. Имеется множество значений ТР в отношении С и при изменении зависимости между значениями СТС и ТР требуется просмотр всех кортежей этого отношения.

Третья нормальная форма

Ликвидировать перечисленные недостатки, как и ранее, можно, заменив исходное отношение С отношениями СК (табл. 3.5) и КФ (табл. 3.6) со схемами СК(ПК, СТС) и КФ(СТС, ТР) (рис. 3.3). Естественным соединением данных отношений можно получить исходное. В результате преобразования исчезает транзитивная зависимость атрибутов СТС и ТР.

Отношение R находится в третьей нормальной форме (3НФ), если оно представлено в 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа. Отношения СК и КФ представлены в 3НФ, а отношение С — нет. Отношение в 2НФ всегда можно преобразовать в эквивалентную совокупность отношений в 3НФ.

Из сказанного ранее известно, что этот процесс обратим и, следовательно, никакая информация в процессе преобразования не теряется. Однако отношение в 3НФ может содержать информацию, которую нельзя представить в отношении, находящемся в 2НФ. Например, отношение КФ может содержать кортеж <ВМ ФПМ>, в то время как в исходном отношении информация о зависимости значений ВМ и ФПМ отсутствует, если нет значений ПК, определяющих значение ВМ.

Таблица 3.5. Отношение СК Таблица 3.6. Отношение КФ

ПК СТС   СТС ТР
п1 с1   с1 т1
п2 с1   с2 т1
п3 с2   с4 т2
п4 с4      
п5 с4      

Заметим, что если неключевой атрибут частично зависит от ключа, то имеет место и транзитивная зависимость этого атрибута от ключа. Следовательно, схема отношений в 3НФ принадлежит и 2НФ.

Многозначные зависимости

Наши рекомендации