Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПодробныеТекстыЛекТЭИС_ПИ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.24 Mб
Скачать

Алгоритм нормализации (к знф)

1. Получить исходное множество функциональных зависимостей для атрибутов рассматриваемой БД.

Если исходные функциональные зависимости не удается определить путем анализа смысловых характеристик атрибутов, приходится использовать перечисление и отбраковку допустимых вариантов функциональных зависимостей.

Рассматриваются все сочетания по два атрибута, и в каждом случае доказывается или отвергается функциональная зависимость. Затем рассматриваются сочетания:

• по три атрибута, где первые два могут функционально определять третий,

• по четыре атрибута, где первые три могут функционально определять четвертый и т.д.

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

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

F = {f1,…f1,…fk}

Определить первичный ключ отношения.

3. Для каждой функциональной зависимости fi создать проекцию исходного отношения Ri = R[Xi], где Xi — объединение атрибутов из левой и правой частей fi.

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

Для практического применения алгоритма нормализации до ЗНФ существенны два вопроса:

• как учесть наличие взаимнооднозначных соответствий,

• как сократить объем перебора вариантов при первоначальном определении множества функциональных зависимостей.

Для взаимнооднозначных соответствий принято выделение старшего (по объему представляемого понятия) атрибута, который затем представляет все атрибуты взаимнооднозначного соответствия.

Для ускорения шага 1 алгоритма нормализации не рассматриваются такие зависимости, которые являются следствием уже найденных зависимостей и теорем 1 — 6, и используется ряд закономерностей об отсутствии функциональных зависимостей. Среди них — теорема:

Если А —>В и D—V—> С, то ABD—/—> С и правило, согласно которому функциональные зависимости с атрибутом—основанием в левой части не требуется рассматривать (в противном случае алгоритм станет создавать отношения, состоящие только из атрибутов—оснований и не имеющие экономического смысла).

Прямер

Рассмотрим отношение со сведениями о научно—исследовательских работах. Список атрибутов: НИИ, Директор, Адрес, Отдел, Ксотр, Тема, Датанач, Датакон, Приор, Заказ, Обфин, Работа, Прод ФИО.

На шаге 1 будет выделен блок взаимно—однозначных соответствий на атрибутах: НИИ, Директор, Адрес. Далее атрибутом—представителем'будем считать НИИ. Список функциональных зависимостей приводится ниже.

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

Отдел—>НИИ,

Отдел —> Директор,

Отдел —> Ксотр,

Тема —> Датанач,

Тема —> Датакон,

Тема —> Приор,

ФИО —> НИИ,

ФИО —> Директор,

ФИО —> Отдел,

Тема, Заказ —> Обфин,

Тема, Работа, ФИО —> Прод.

Структура реляционной базы данных

R1 (НИИ,Директор,Адрес),

R2 (НИИ,Отдел,Ксотр),

R3 (Тема,Датанач,Датакон,Приор),

R4 (ФИО,Отдел),

R5 (Teмa,Зaкaз,Oбфин),

R6 (Тема ,Работа,ФИО,Прод),

R7 (Тема,Заказ,Работа,ФИО)

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

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

Хотя на основе функциональных зависимостей можно установить более сильную нормальную форму Бойса—Кодда (БКНФ), практически она применяется редко. Во—первых, база данных в БКНФ не всегда существует, во—вторых, ее отличие от ЗНФ обычно связано с наличием нескольких ключей в отношении, что в экономических приложениях встречается исключительно редко.