Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретические основы реляционных баз данных. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
936 Кб
Скачать

- 106 -

Пример. Для множеств F={A BC, B A, AD E} и G={A ABC, B A, BD E}

EF(A) = {A BC, B A } EF(AD) = { AD E}

EF = {EF(A), EF(AD)} EG(A) = {A ABC, B A} EG(BD) = {BD E}

EF = {EG(A), EG(BD)}

3.5.4. Минимальные покрытия

Если рассмотреть два множества F-зависимостей F = {A B, B A, AC D, BC E} и G = {A B, B A, BC DE}, то можно заметить, что F G и каждое из этих множеств неизбыточно. С другой стороны, множество G содержит меньшее количество F-зависимостей, что для нас явно предпочтительнее. Этот факт приводит к необходимости рассмотрения еще одного вида покрытий.

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

Как видно из определения, минимальных покрытий у одного множества F-зависимостей может быть несколько. Любое минимальное покрытие одновременно является и неизбыточным, поскольку если в нем содержится избыточная зависимость, то она может быть удалена из него без изменения замыкания и, следовательно, существует эквивалентное множество с меньшим числом F-зависимостей.

3.5.4.1. Прямая определяемость

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

Атрибут X прямо определяет атрибут Y (X →˙ Y) на схеме R относительно множества функциональных зависимостей F, если X Y R, а для F-зависимости X Y существует такое неизбыточное покрытие G множества F, у которого есть DDAграф H над F, такой что U(H) EF(X) = .

- 107 -

Другими словами, для множества F-зависимостей G возможно нахождение такого неизбыточного покрытия F, что F - EF(X) |= X Y.

Для прямой определяемости всегда справедливо следующее:

X →˙ X;

X →˙ Y |= X Y, при этом допускается EF(X) = ;

A →˙ B только при A = B.

Пример. Проверить справедливость AB →˙ J относительно множества G = {A CD, AB E, B I, DI J}. Построим сначала DDAграф H для F-зависимости AB J.

A D

J

B I

Как видно из графа, его используемое множество имеет вид: U(H) = { A CD, B I, DI J}, в то время как EF(AB) = {AB E}. Поскольку U(H) EF(AB) = , можно сделать вывод о существовании AB ˙ J относительно G.

Достаточно легко построить алгоритм проверки прямой определяемости X →˙ Y относительно множества G. Для этого необходимо рассматривать возможность выводимости F-зависимости X Y из множества F = G - EG(X). На первом этапе алгоритма определяется множество EG(X), а затем проверяется выводимость зависимости X Y.

DDERIVES(G, X →˙ Y) begin

F := G

for каждая F-зависимость U Z G if MEMBER (G, X U) then

if MEMBER (G, U X) then F := F - {U Z};

return (MEMBER (F, X Y)) end.

3.5.4.2. Вычисление минимальных покрытий

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

- 108 -

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

Не вдаваясь в подробности и доказательства, примем как должное, что если множества F-зависимостей F и G эквивалентны и минимальны, то для любого X будет справедливо утверждение |EF(X)|= = |EG(X)|, другими словами, судить о минимальности множества в целом можно по минимальности размеров всех классов эквивалентности, которую можно проверить на основании леммы, которая также приводится без доказательств.

Введем в рассмотрение еще одно множество, которое обозначим как eF(X) и которое будет представлять собой множество левых частей F-зависимостей из множества EF(X).

Пример. Для множества F-зависимостей F={A BC, B A, AD E}, EF(A)= {A BC, B A}, тогда eF(A)={A, B}.

Лемма. Если F - минимальное множество F-зависимостей, то для каждого класса эквивалентности EF(X) не существует двух зависимостей Y U и Z V таких, что Y →˙ Z.

На основании леммы строится алгоритм MINIMIZE, основанный на поиске класса эквивалентности, для которого справедливо Y U, Z V, Y →˙ Z, и последующей замене двух зависимостей Y U и Z V на одну зависимость Z UV.

MINIMIZE(G)

 

 

 

begin

 

 

 

F=NONREDUN(G);

 

 

 

определить множество

E

F ;

 

 

for каждая EF(X) EF do

 

 

 

for каждая {Y U} EF(X) do

 

 

for каждая ({Z V} EF(X))

and ({Z V}

{Y U}) do

if DDERIVES (F, Y

Z) then

 

 

 

 

˙

 

 

F = (F - {Y U,

Z V}) {Z UV};

 

return (F)

 

 

 

end.

 

 

 

Пример. Для множества F-зависимостей F = {A B, B A, AC D, BC E} можно выделить два класса эквивалентности: EF(A) = ={A B, B A} и EF(AC) = {AC D, BC E}. Для класса EF(A) прямая определяемость A →˙ B и B →˙ A невозможна, поскольку в правой и

- 109 -

левой частях стоят одиночные атрибуты, а прямая определяемость возможна только в том случае, если они равны (свойства прямой определяемости).Используемое множество U(H) DDA-графа для зависимости AC BC U(H) = {A B}.

A->B

A B

C

Поскольку U(H) EF(AC) = , то можно утверждать, что ACBC и, следовательно, зависимости AC D и BC E можно заменить на одну зависимость Z UV. Других классов эквивалентности у нас нет, и, следовательно, минимальное покрытие будет выглядеть следующим образом: F G = {A B, B A, BC DE}.

3.5.4.3. Оптимальные покрытия

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

Пример. Два множества F={EC D, AB E, E AB} и G={ABC D, AB E, E AB} минимальны, но если множество G содержит 10 атрибутных символов, то множество F только 9.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]