Нормализация
Нормализация – это формальный метод анализа отношений на основе их первичных или потенциальных ключей и существующих функциональных зависимостей между атрибутами этих отношений.
В реляционной модели переменная-отношение, согласно определению, всегда нормализована, но не в достаточной степени, чтобы быть неуязвимой по отношению к аномалиям обновления. Поэтому в процессе нормализации к переменным отношений последовательно применяется ряд правил, чтобы вся база данных достигла желаемой степени нормализации.
Наиболее удобной формой демонстрации взаимосвязи между разными нормальными формами является схематическое изображение процесса нормализации.
В настоящее время пятую нормальную форму (5НФ) можно считать "окончательной" формой, и поэтому графическая картина взаимосвязи форм будет иметь следующий вид:
Рис. 4.1. Взаимосвязи между отдельными нормальными формами
Как видно из рисунка 4.1, все отношения находятся в первой нормализованной форме (1НФ). Некоторые 1НФ отношения находятся в 2НФ и некоторые 2НФ в 3НФ и т.д. При проектировании БД производится перевод отношений из одной НФ в другую, более желательную нормальную форму. Процедура перевода отношений к более желательным формам должна быть обратима, т.е. выполнение обратного преобразования должно проходить без потерь, т.к. в процессе нормализации информация не должна утрачиваться.
4.1. Декомпозиция без потерь
Один из методов избежать аномалии обновления в процессе нормализации – выполнение декомпозиции (разбиения) исходного отношения на меньшие отношения. Эту процедуру надо выполнить так, чтобы оба свойства декомпозиции были сохранены. Первое из них – это свойство обратимости, которое позволит восстановить любой кортеж исходного отношения, используя соответствующие кортежи меньших отношений. Второе – сохранение ограничения, наложенного на исходное отношение, посредством наложения определенных ограничений на каждое из меньших отношений. Иначе говоря, интерес представляет только та декомпозиция, которая выполняется без потери информации.
В качестве примера рассмотрим отношение Поставщики с атрибутами {Код, Статус,Город}. Выполним два варианта декомпозиции отношения Поставщики (Рис. 4.2.):
Рис. 4.2. Декомпозиции отношения Поставщики
1. В случае а) информация не утрачивается, поскольку Статус_поставщика и Город_поставщика содержат данные о том, что поставщик П3 имеет Статус 30 и находится в Новгороде. Соответственно и П5 имеет Статус 30 и находится в Твери.
2. В случае б) некоторая информация утрачивается, поскольку оба поставщика имеют Статус 30, но нельзя сказать в каком городе находится каждый из них, т.е. вторая декомпозиция не является декомпозицией без потерь.
Процесс декомпозиции на самом деле является операцией проекции, т.е. каждая из представленных на Рис. 4.2. переменных-отношений: Статус_поставщика, Город_поставщика и Статус_города -- в действительности являются проекциями отношения Поставщики.
Если операцией декомпозиции в процедуре нормализации является операция проекции, то обратной операцией должна быть операция соединения.
Пусть R1 и R2 проекции некоторого отношения R. Какие условия должны быть соблюдены, чтобы обратные соединения R1 и R2 гарантировали бы получение R?
Ответ на это вопрос даёт теорема Хеза.
Теорема Хеза: Пусть R{A, B, C} является отношением, где А, В и С атрибуты этого отношения. Если R удовлетворяет Ф3 АВ, то R равно соединению его проекции
{A, B} и {A,C}.
Обозначим А-Код, B-Статус, C-Город. Согласно теореме Хеза, отношение Поставщики можно разбить на проекции:
{Код, Статус} и {Код, Город} без утраты информации
и на проекции:
{Код, Статус} и {Статус, Город} с потерей информации.