Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метода к типовому v.3_.doc
Скачиваний:
5
Добавлен:
11.11.2019
Размер:
2.18 Mб
Скачать

2.3Нормализация базы данных методом декомпозиции

С помощью метода декомпозиции отношение приводится в нормальной форме Бойса-Кодда. Метод декомпозиции можно проводить аналитически, составив перечень всех ФЗ, или графически, построив диаграмму функциональных зависимостей. Графический подход предпочтительнее в силу своей наглядности.

Алгоритм декомпозиции.

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

  2. Определить все функциональные зависимости между атрибутами универсального отношения.

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

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

Правило №1. Рефлексивность.

А А справедливо, но избыточно.

Правило №2. Добавление.

Если А ® В, то А, С ® В справедливо, но избыточно, и А, С ® В, С справедливо, но избыточно.

Рис. 2.1 а) Рис. 2.1 б)

Правило №3. Транзитивность.

Если А ® В, В ® С, то А ® В ® С – транзитивная функциональная зависимость и А ® С справедливо, но избыточно.

Рис. 2.2

Правило №4. Псевдотранзитивность.

Если А ® В, и В, С ® D, то А, C ® D справедливо, но избыточно.

Рис. 2.3

Правило №5. Объединение.

Если А ® В, и А ® С, то А ® В, С справедливо, но избыточно.

Рис. 2.4

Часто это правило используют для избавления функциональной зависимости группы атрибутов (В, С на рис. 2.4) от одного атрибута (А на рис. 2.4) так, как показано на рис. 2.5.

Рис. 2.5

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

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

Пошаговая нормализация проводится по следующим правилам:

Приведение к 2НФ. Если в некоторых отношениях обнаружена зависимость атрибутов от части сложного ключа, то проводится декомпозиция этих отношений на несколько отношений следующим образом: те атрибуты, которые зависят от части сложного ключа выносятся в отдельное отношение вместе с этой частью ключа. В исходном отношении остаются все ключевые атрибуты:

Исходное отношение: R(K1, K2, A1,…,An, B1,…,Bm).

Ключ: {K1, K2} – составной.

Функциональные зависимости:

{K1, K2}  {A1,…,An, B1,…,Bm} – зависимость всех атрибутов от ключа отношения.

{K1}  {A1,…,An} – зависимость некоторых атрибутов от части сложного ключа.

Декомпозированные отношения:

R1(K1, K2, B1,…,Bm) – остаток от исходного отношения. Ключ {K1, K2}.

R2(K1, A1,…,An,) – атрибуты, вынесенные из исходного отношения вместе с частью сложного ключа. Ключ K1.

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

Исходное отношение: R(K, A1,…,An, B1,…,Bm).

Ключ: К.

Функциональные зависимости:

K  {A1,…,An, B1,…,Bm} – зависимость всех атрибутов от ключа отношения.

{A1,…,An}  {B1,…,Bm} – зависимость некоторых неключевых атрибутов от других неключевых атрибутов.

Декомпозированные отношения:

R1(K, A1,…,An) – остаток от исходного отношения. Ключ К.

R2(A1,…,An, B1,…,Bm) – атрибуты, вынесенные из исходного отношения вместе с детерминантом функциональной зависимости. Ключ {A1,…,An}.

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

Исходное отношение: R(K, A1,…,An, B1,…,Bm).

Ключ: К.

Функциональные зависимости:

K  {A1,…,An, B1,…,Bm} – зависимость всех атрибутов от ключа отношения.

{A1,…,An}  K – зависимость ключевого атрибута от неключевых атрибутов.

Декомпозированные отношения:

R1(K, B1,…,Bn) – остаток от исходного отношения. Ключ К.

R2(K, A1,…,An) – атрибуты, вынесенные из исходного отношения вместе с детерминантом функциональной зависимости. Возможные ключи {A1,…,An} или К.

  1. Повторить шаг 4 для каждого нового отношения, полученного в результате декомпозиции.

Проектирование завершается, когда все отношения находятся в НФБК.

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