Скачиваний:
50
Добавлен:
10.05.2015
Размер:
118.78 Кб
Скачать

4.5.Замыкание множества заданных функциональных зависимостей.

При декомпозиции отношения Rс целью его нормализации на два отношенияR1 иR2 может оказаться, что вR1 илиR2 появятся новые функциональные зависимости, которых не было в отношенииR. В этом случае нужно получить из множества функциональных зависимостейF, присущих отношениюRполное множество функциональных зависимостей –F+ , которое называется замыканиемF.

Если F1 – множество функциональных зависимостей, присущих отношениюR1, то декомпозиция будет верной, еслиF1≤F+ и еслиF2≤F+ , гдеF2 – множество функциональных зависимостей, присущих отношениюR2.

Существует несколько методов получения F+ изF. Рассмотрим 2 метода.

Алгоритм SATISFIES.

Пусть задано отношение График(Пилот, Рейс, Дата, Время вылета)

Пилот

Рейс

Дата

Время вылета

1

1

2

2

2

3

3

4

4

4

83

116

281

301

83

83

116

281

281

412

9Августа

10 Августа

8 Августа

12 Августа

11 Августа

12 Августа

13 Августа

9 Августа

13 Августа

15 Августа

10:15

13:25

5:50

18:35

10:15

10:15

13:25

5:50

5:50

13:25

Куминг-1

Кларк-2

Чин-3

Коул-4

Для этого отношения иметься следующая семантика:

F={Рейс → Время вылета,

Пилот, Дата, Время вылета → Рейс,

Рейс, Дата → Пилот}

Имея это множествоFмы можем задаться вопросом о том, а существует ли зависимость, например, такого типа: Время вылета → Рейс или другие, более сложные зависимости.

Ответ на этот вопрос можно получить используя следующий алгоритм:

Пусть задано отношение RиF- зависимостьx→y.

1.Пересортируем отношение Rпоx- столбцам так, чтобы собрать кортежи с равнымиx- значениями вместе.

2.Если каждая совокупность кортежей с равными x-значениями имеет так же равныеy-значения, то существует зависимостьx→y. В противном случае нет.

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

Проверим зависимость: Рейс → Время вылета.

XY

Пилот

Рейс

Дата

Время вылета

1

2

3

9Августа

11 Августа

13 Августа

=

1

3

10 Августа

12 Августа

=

2

4

4

8 Августа

9 Августа

13 Августа

=

2

301

12 Августа

18:35

4

412

15 Августа

13:25

Вторая часть алгоритма выполняется, значит x→y.

Проверим зависимость: Время вылета → Рейс.

Пилот

Рейс

Дата

Время вылета

2

4

4

281

281

281

8Августа

9 Августа

13 Августа

5:50

5:50

5:50

1

2

3

83

83

83

9 Августа

11 Августа

13 Августа

10:15

10:15

10:15

1

3

4

10 Августа

12 Августа

15 Августа

13:25

13:25

13:25

2

301

12 Августа

18:35

Для времени 13:25 второе условие алгоритма не выполняется, следовательно зависимость Время вылета → Рейс не существует.

С помощью приведенного алгоритма можно получить полное множество функциональных зависимостей F+, соответствующих заданному отношению и его семантике, т.е.F≤F+

Пример получения F+ изF.

Дано: R(A,B,C) иF= {AB→C,C→B}

Множество F+будет состоять из следующих элементов:

F+= {A→AB→BC→C

AB→AAB→BAC→C

AC→ABC→BBC→C

ABC→AABC→BABC→C

AB→ABAC→ACBC→BCABC→ABC

ABC→ABABC→ACABC→BC

1ABC→C2C→BAC→B

AB→ACC→BCAC→AB}

AB→BC

AB→ABC

3.36. Множество X+.

Множество F+даже для небольшого числа зависимостей вFможет быть очень большим и его вычисление трудоемко. Однако принадлежность функциональной зависимости в множествеF+нам необходимо всегда проверять, так как правильность отношенияRпроверяется по двум условиям:

R1

  1. Rна условие естественного соединенияR1 иR2,

R2 восстанавливающегоR.

  1. На условие принадлежности полученных функциональных зависимостей к множеству F+.

Задача принадлежности функциональной зависимости к F+была решена с помощью простого алгоритма. Вместо вычисленияF+можно вычислить другое множество, которое будет называтьсяX+и функциональная зависимостьx→yпринадлежитF+, еслиy≤x+.

Алгоритм получения X+.

Рассмотрим на примере:

Дано: U={A,B,C,D,E,G} и R(A,B,C,D,E,G).

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

F={AB→CD→EG

C→ABE→C

BC→DCG→BD

ABCD→BCE→AG}

Проверим, принадлежит ли BD→EкF+.

Положим X(0)=BD.

1.Вычислим значение X(1). Для его вычисления найдем зависимости, которые имеют в левой частиB,DилиBD. Такой зависимостью является:D→EG.

Присоединим к X(0) EG(правую часть зависимости), тогдаX(1)=BDEG.

2.Ищем зависимости, которые в левой части имеют B,D,E,Gили их комбинации.

D→EG,BE→C. ТогдаX(2)=BCDEG

3.Выписываем зависимости, имеющие в левых частях B,C,D,E,G.

C→A,BC→D,CG→,BD,CE→AG.X(3)=ABCDEG– мы получили множество всех атрибутов отношенияR. Значит следующие шаги не принесут никаких новых результатов. Итеративный процесс на этом заканчивается.

X+=ABCDEG(BD)+=ABCDEG

Проверим теперь: Принадлежит ли зависимость BD→EзависимостиF+.

Т.к. Е ≥X+, то зависимостьBD→EпринадлежитF+замыканию множества функциональных зависимостейF.

Соседние файлы в папке Дополнительные лекции