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

-134 -

3.7.2.6.Нормальная форма вида «проекция-соединение»

Нормальная форма вида «проекция-соединение» (НФПС) — решение проблемы устранения избыточности при наличии в отношении зависимостей соединения. Для начала введем понятие тривиальной J-зависимости, которое аналогично тривиальной MVзависимости.

J-зависимость *[R 1, R 2, ..., R p ] называется тривиальной, если она удовлетворяется в любом отношении r со схемой R, и приложимой к R, если R = R 1 R 2 ... R p.

Следует заметить, что все тривиальные зависимости имеют вид *[R1, R2, ..., Rp], где Ri = R, для любого i от 0 до p.

Пусть R — схема отношения и F — множество F- и J- зависимостей над R. Схема R находится в НФПС относительно F, если для каждой J-зависимости *[R1, R2, ..., Rp], выводимой из F и приложимой к R, J-зависимость тривиальна или каждая схема Ri является суперключом R. Схема базы данных R находится в НФПС относительно F, если каждая из схем отношений R из R также находится в НФПС.

Пример. Пусть имеется схема R = A B C D E I и F = { *[ A B C D, C D E, B D I], *[A B, B C D, A D], A BCDE, BC AI}. Из F- зависимостей можно определить, что множество ключей схемы K = ={A,BC}. Отношение не находится в НФПС из-за зависимости *[ A B C D, C D E, B D I]. После декомпозиции по схемам R1 = A B C D ,

R2 = C D E и R3 = B D I схема базы данных R = {R1, R2, R3} будет находиться в НФПС, поскольку, хотя зависимость *[A B, B C D, A D]

приложима к схеме R1 = A B C D и не является тривиальной, каждое из составляющих ее множеств атрибутов включает в себя один из ключей схемы.

3.8. Алгоритмы синтеза схем баз данных

Существует достаточно большое количество алгоритмов, целью которых является построение схем реляционных баз данных, удовлетворяющих требованиям третьей нормальной формы. Рассмотрены будут только два: нормализация через декомпозицию и нормализация посредством синтеза. Алгоритмы для схем с MV- и J- зависимостями практически не разработаны, и рассматриваться будут только основные идеи.

-135 -

3.8.1.Нормализация через декомпозицию

Алгоритм сводится к тому, что берется отношение, которое включает все атрибуты из множества U (все атрибуты, с которыми может иметь дело система), анализируются зависимости между данными, и на их основе формируется множество F-зависимостей F. Это множество обрабатывается соответствующим образом: исключаются избыточные зависимости, удаляются посторонние атрибуты и, по возможности, ищется минимальное покрытие. Затем ищутся транзитивные зависимости и последовательно удаляются путем декомпозиции исходного отношения на два со схемами R1 и R2, для которых любое отношение, удовлетворяющее множеству F- зависимостей F, разлагается без потерь на R1 и R2. Возможно, одно из отношений не окажется в третьей нормальной форме, тогда для этого отношения процесс декомпозиции следует повторить. Декомпозиция повторяется до тех пор, пока все отношения не будут удовлетворять требованиям третьей нормальной формы. Следует добавить, что исходное отношение обязательно уже должно быть в первой нормальной форме, приведение к которой алгоритмизировать практически невозможно и поэтому оно остается целиком и полностью на совести разработчика.

Предположим, что существует транзитивная зависимость от ключа в схеме R. В схеме имеется ключ K R, множество атрибутов Y R и непервичный атрибут A R. Множество F влечет зависимости K Y и Y A, но не влечет Y K. Транзитивность удаляется разбиением на схемы R1 = R A и R2 = Y A. Если для схемы имеются выделенные ключи R = ( S, K), то R1 = (S - A,K) и R2 = (YA, { Y }). Возможен случай, когда A оказывается частью одного из суперключей из K (A K), тогда в множестве K необходимо удалить A из K: K = (K - -K) {K - A}.

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

Пример. Рассмотрим отношение, полученное при проведении системного анализа с небольшими упрощениями:

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

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

- 136 -

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

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

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

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

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

ЛЕКТОР КАФЕДРА ДОЛЖНОСТЬ} Удаляем транзитивную зависимость атрибута ДЕКАН от ключа

через ФАКУЛЬТЕТ. В результате получим пару схем R1 и R2:

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

K1 = { КНИЖКА ДИСЦИПЛИНА }. R2 = ФАКУЛЬТЕТ ДЕКАН.

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

Отношение R2 находится в 3НФ и дальнейшей декомпозиции не требует, а из отношения R1 следует удалить транзитивную зависимость ЗАВЕДУЮЩИЙ ФАКУЛЬТЕТ от ключа через КАФЕДРА:

R11 = БИЛЕТ КНИЖКА СТУДЕНТ ГРУППА ПАСПОРТ ПОЛ СПЕЦИАЛЬНОСТЬ СТАРОСТА КУРАТОР ЛЕКТОР ДОЛЖНОСТЬ КАФЕДРА ДИСЦИПЛИНА СЕМЕСТР ОЦЕНКА.

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

R12 = КАФЕДРА ЗАВЕДУЮЩИЙ ФАКУЛЬТЕТ.

K12 = { КАФЕДРА }.

Отношение R12 опять в 3НФ, а отношение R11 содержит транзитивную зависимость КАФЕДРА от ключа через СПЕЦИАЛЬНОСТЬ. После очередной декомпозиции получаем:

R111 = БИЛЕТ КНИЖКА СТУДЕНТ ГРУППА ПАСПОРТ ПОЛ СПЕЦИАЛЬНОСТЬ СТАРОСТА КУРАТОР ЛЕКТОР ДОЛЖНОСТЬ ДИСЦИПЛИНА СЕМЕСТР ОЦЕНКА.

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

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

R1111112
СЕМЕСТР.

- 137 -

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

Удаляем транзитивную зависимость КУРАТОР СТАРОСТА СПЕЦИАЛЬНОСТЬ от ключа через ГРУППА:

R1111 = БИЛЕТ КНИЖКА СТУДЕНТ ГРУППА ПАСПОРТ ПОЛ ЛЕКТОР ДОЛЖНОСТЬ ДИСЦИПЛИНА СЕМЕСТР ОЦЕНКА.

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

R1112 = ГРУППА КУРАТОР СТАРОСТА СПЕЦИАЛЬНОСТЬ.

K1112 = { ГРУППА }.

Удаляем транзитивную зависимость БИЛЕТ СТУДЕНТ ГРУППА ПАСПОРТ ПОЛ от ключа через КНИЖКА:

R11111 = КНИЖКА ЛЕКТОР ДОЛЖНОСТЬ ДИСЦИПЛИНА СЕМЕСТР ОЦЕНКА.

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

R11112 = БИЛЕТ КНИЖКА СТУДЕНТ ГРУППА ПАСПОРТ ПОЛ. K11112 = { БИЛЕТ, КНИЖКА, СТУДЕНТ, ПАСПОРТ }.

Удаляем транзитивную зависимость ДОЛЖНОСТЬ от ключа через ЛЕКТОР:

R111111 = КНИЖКА ЛЕКТОР ДИСЦИПЛИНА СЕМЕСТР ОЦЕНКА.

K111111 = { КНИЖКА ДИСЦИПЛИНА }. R111112 = ЛЕКТОР ДОЛЖНОСТЬ.

K111112 = { ЛЕКТОР }.

Наконец, последняя декомпозиция позволяет удалить транзитивную зависимость ЛЕКТОР от ключа. Однако здесь уже видны некоторые недостатки метода декомпозиции — существует зависимость ДИСЦИПЛИНА СПЕЦИАЛЬНОСТЬ КАФЕДРА СЕМЕСТР ЛЕКТОР, которую трудно реализовать из-за отсутствия атрибута СПЕЦИАЛЬНОСТЬ, удаленного ранее. Этот атрибут необходимо добавить искусственно:

R1111111 = КНИЖКА ДИСЦИПЛИНА ОЦЕНКА. K1111111 = { КНИЖКА ДИСЦИПЛИНА }.

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

K1111112 = { СПЕЦИАЛЬНОСТЬ ДИСЦИПЛИНА }.

Таким образом, получена схема реляционной базы данных

R= { R2, R12, R112, R1112, R11112, R111112,R 1111111, R1111112}.

3.8.2.Недостатки нормализации через декомпозицию

Как мы уже обратили внимание, на примере при нормализации через декомпозицию возникают новые проблемы.

- 138 -

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

Во-вторых. Число порожденных алгоритмом отношений может оказаться большим, чем это действительно требуется для того, чтобы схема базы данных удовлетворяла условиям 3НФ.

Пример. R = A B C D E и F= {AB CDE, AC BDE, B C, C B, C D, B E}. Ключи схемы — AB, AC. При удалении транзитивной зависимости D от AB через C получаются схемы R1 = (ABCE, {AB, AE}) и R2 = (CD, {C}). Для R1 используем транзитивность B AB E и получаем окончательную схему базы данных R = {R11, R12, R2} = { (ABC, {AB, AE}), (BE, {B}), (CD, {C})}, хотя на самом деле имеется декомпозиция всего с двумя отношениями R = {R1, R2} = { (ABC, {AB, AC}), (BDE, {B} ) }.

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

Пример. Для R = A B C D и F= {A BCD, BC D, C D}

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

В-четвертых. Для построенной схемы данное множество может оказаться ненавязанным.

Пример. R = A B C D E и F= {A BCDE, CD E, E C B}. После исключения транзитивности A CD E, получается схема R = {(ABCD, {A}), (CDE, {CD})}. Зависимость E C B при этом не выводится из F-зависимостей в замыкании F, приложимых к схемам отношений из R.

В-пятых. Возможно порождение схем со «скрытыми» транзитивными зависимостями.

Пример. R = A B C D и F= {A B, B C } K = {AD}. Транзитивность A AD B приводит к схеме R = { (ACD, {AD}), (AB, {A}) }, которая формально находится в 3НФ, но в которой присутствует скрытая транзитивность AD B C.

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