17.7. Алгоритм нормализации

Шаг 1: приведение к 1НФ

На первом шаге задается одно или несколько отношений, отображающих понятия ПО. По модели ПО (а не по внешнему виду полученных отношений!) выписываются обнаруженные ФЗ. Все отношения автоматически находятся в 1НФ.

Шаг 2: приведение к 2НФ

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

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

ФЗ: {К1, К2} – { A1, An, B1, Bm} – зависимость всех атрибутов от ключа отношения.

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

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

R1 (K1, K2, B1, Bm) – остаток от исходного отношения.

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

Шаг 3: приведение к 3НФ

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

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

ФЗ: {К} – { A1, An, B1, Bm}- зависимость всех атрибутов от ключа отношения.

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

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

R1 (K, А1, Аm) – остаток от исходного отношения

R2 (A1, An, B1, Bm) – атрибуты, вынесенные из исходного отношения вместе с детерминантом ФЗ.

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