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

-139 -

3.8.3.Нормализация посредством синтеза

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

При заданной схеме R и множестве F-зависимостей следует получить схему базы данных R = { R 1, R 2, ..., R p }, которая будет удовлетворять следующим условиям:

1.Множество F полностью характеризуется с помощью

схемы R, другими словами, F { Ki Ri | Ri R при Ki — ключ Ri}.

2.Каждая схема Ri находится в 3НФ относительно F.

3.Не существует схемы базы данных с числом отношений, меньшим, чем R, которые в то же время удовлетворяют условиям 1 и 2.

4.Для любого отношения, удовлетворяющего F, справедлива декомпозиция без потерь

5.r=πR 1(r) π R2 (r) … π Rp (r) .

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

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

Лемма. Если имеется схема базы данных R, представляющая множество F-зависимостей G, то она состоит не менее чем из |EG| схем отношений.

Действительно, все F-зависимости, относящиеся к конкретной схеме R R, должны иметь эквивалентные левые части, иначе обязательно возникает либо частичная определяемость, либо транзитивная зависимость непервичного атрибута от ключа в схеме и ее надо подвергать декомпозиции, следовательно, общее количество схем должно увеличиться. Таким образом, если K1 и K2 — ключи

- 140 -

схемы R, то выполняются зависимости K1 R и K2 R, следовательно, K1 K2 и K2 K1. Отсюда каждое отношение может включать зависимости не более чем одного класса эквивалентности EG, а для представления всех схем потребуется не менее |EG| схем.

Лемма непосредственно указывает путь построения алгоритма синтеза через нахождение неизбыточного покрытия F исходного множества F и вычисление классов эквивалентности |EG`|. Для каждого множества EF` из EF` строится схема отношения Ri по следующим правилам:

Ki = eF`(X) — множество выделенных ключей для схемы Ri.

Ri = { A | A входит в левую или правую часть любой F-

зависимости из EF`(X) }.

Однако полученная схема может не оказаться в 3НФ относительно F.

Пример. F = F = {A BC, B C}, R = A B C. Для данного множества F-зависимостей мы имеем два класса эквивалентности и, следовательно, получаем в соответствии с вышеизложенными правилами следующую схему базы данных: R = {R1, R2} = { ( ABC, {A} ), (BC {B})}. Заметим, что первое отношение не удовлетворяет 3НФ из-за транзитивности A B C, которая возникает по причине нередуцированности F, содержащего посторонний атрибут C в зависимости A BC. После его удаления схема базы данных примет

вид R = {R1, R2} = { ( AB, {A} ), (BC {B} )}.

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

Таким образом, алгоритм синтеза должен включать следующие шаги:

1 Найти для множества F-зависимостей редуцированное минимальное кольцевое покрытие G.

2 Для каждой CF-зависимости (X1, X2, ... , Xk) Y построить схему

отношения R = ( X1 X2 ... Xk Y, { X1, X2, ... , Xk } ).

Пример. Рассмотрим тот же пример, что и для алгоритма нормализации через декомпозицию:

R = БИЛЕТ КНИЖКА СТУДЕНТ ГРУППА ПАСПОРТ ПОЛ СПЕЦИАЛЬНОСТЬ СТАРОСТА КУРАТОР ЛЕКТОР ДОЛЖНОСТЬ КАФЕДРА ФАКУЛЬТЕТ ЗАВЕДУЮЩИЙ ДЕКАН ДИСЦИПЛИНА СЕМЕСТР ЛЕКТОР ОЦЕНКА.

K = { КНИЖКА ДИСЦИПЛИНА }.

- 141 -

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

F = {КНИЖКА ДИСЦИПЛИНА ОЦЕНКА,

КНИЖКА БИЛЕТ СТУДЕНТ ГРУППА ПАСПОРТ ПОЛ, БИЛЕТ КНИЖКА СТУДЕНТ ГРУППА ПАСПОРТ ПОЛ, ПАСПОРТ БИЛЕТ КНИЖКА СТУДЕНТ ГРУППА ПОЛ, СТУДЕНТ БИЛЕТ КНИЖКА ГРУППА ПАСПОРТ ПОЛ, БИЛЕТ ГРУППА, ГРУППА СПЕЦИАЛЬНОСТЬ СТАРОСТА КУРАТОР,

СПЕЦИАЛЬНОСТЬ КАФЕДРА, КАФЕДРА ФАКУЛЬТЕТ ЗАВЕДУЮЩИЙ ФАКУЛЬТЕТ ДЕКАН,

ДИСЦИПЛИНА СПЕЦИАЛЬНОСТЬ КАФЕДРА СЕМЕСТР ЛЕКТОР

ЛЕКТОР КАФЕДРА ДОЛЖНОСТЬ}.

Получим неизбыточное редуцированное покрытие F F ={КНИЖКА ДИСЦИПЛИНА ОЦЕНКА, СТУДЕНТ БИЛЕТ КНИЖКА ПАСПОРТ ПОЛ ГРУППА, БИЛЕТ СТУДЕНТ, КНИЖКА СТУДЕНТ, ПАСПОРТ СТУДЕНТ,

ГРУППА СПЕЦИАЛЬНОСТЬ СТАРОСТА КУРАТОР, СПЕЦИАЛЬНОСТЬ КАФЕДРА, КАФЕДРА ФАКУЛЬТЕТ ЗАВЕДУЮЩИЙ ФАКУЛЬТЕТ ДЕКАН,

ДИСЦИПЛИНА СПЕЦИАЛЬНОСТЬ КАФЕДРА СЕМЕСТР ЛЕКТОР

ЛЕКТОР КАФЕДРА ДОЛЖНОСТЬ}.

Преобразуем к кольцевому покрытию и редуцируем. В результате получим

G ={(КНИЖКА ДИСЦИПЛИНА) ОЦЕНКА,

(СТУДЕНТ, БИЛЕТ, КНИЖКА, ПАСПОРТ) ПОЛ ГРУППА, (ГРУППА) СПЕЦИАЛЬНОСТЬ СТАРОСТА КУРАТОР, (СПЕЦИАЛЬНОСТЬ) КАФЕДРА, (КАФЕДРА) ФАКУЛЬТЕТ ЗАВЕДУЮЩИЙ, (ФАКУЛЬТЕТ) ДЕКАН,

(ДИСЦИПЛИНА СПЕЦИАЛЬНОСТЬ) КАФЕДРА СЕМЕСТР ЛЕКТОР,

(ЛЕКТОР) КАФЕДРА ДОЛЖНОСТЬ}.

- 142 -

После преобразования получим схемы отношений, составляющих схему базы данных:

R1 = КНИЖКА ДИСЦИПЛИНА

K1 = { КНИЖКА ДИСЦИПЛИНА }

ОЦЕНКА

 

 

 

 

R2 = СТУДЕНТ БИЛЕТ КНИЖКА

K2 = { СТУДЕНТ, БИЛЕТ, КНИЖКА,

ПАСПОРТ ПОЛ ГРУППА

ПАСПОРТ }

 

 

R3 = ГРУППА СПЕЦИАЛЬНОСТЬ

K3 = { ГРУППА }

СТАРОСТА КУРАТОР

 

 

 

 

R4 = СПЕЦИАЛЬНОСТЬ КАФЕДРА

K4 = { СПЕЦИАЛЬНОСТЬ }

 

 

 

 

R5

= КАФЕДРА ФАКУЛЬТЕТ

K5

= { КАФЕДРА }

ЗАВЕДУЮЩИЙ

 

 

 

 

 

 

R6

= ФАКУЛЬТЕТ ДЕКАН

K6

= { ФАКУЛЬТЕТ }

 

 

 

 

R7

= ДИСЦИПЛИНА

K7

= { ДИСЦИПЛИНА

СПЕЦИАЛЬНОСТЬ КАФЕДРА

СПЕЦИАЛЬНОСТЬ }

СЕМЕСТР ЛЕКТОР

 

 

 

 

 

 

R8

= ЛЕКТОР КАФЕДРА

K8

= { ЛЕКТОР }

ДОЛЖНОСТЬ

 

 

Контрольные вопросы

1.Приведите пример функциональной зависимости из предметной области «Аптека».

2.Что собой представляет замыкание множества функциональных зависимостей?

3.Для чего нужны аксиомы вывода функциональных зависимостей?

4.Чем отличаются аксиомы Армстронга от классических аксиом вывода?

5.Чем активный домен атрибута отличается от просто домена атрибута?

6.Как вы понимаете атомарность атрибута?

7.Какая функциональная зависимость называется транзитивной?

8.Что такое частичная функциональная зависимость?

9.Дайте определение второй нормальной формы баз данных.

10.Приведите пример многозначной зависимости.

11.Приведите пример зависимости соединения.

12.Как работает алгоритм нормализации через декомпозицию?

13.Как работает алгоритм синтеза схемы реляционной базы

данных?

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