Нормализация данных и нормальные формы реляционных баз данных

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

 

Сущности и связи, описанные в процессе инфологического моделирования предметно области, могут быть преобразованы в отношения (реляционную модель) различными способами. Выявить наиболее подходящие реляционной модели способы – очень важная задача.

 

Собственно, нормализация позволяет устранить возможные недостатки в реляционной структуре данных и устранить ошибки (аномалии) проектирования. Нормализация особенно актуальна в случае больших проектов, содержащих большое число сущностей со сложными взаимосвязями.

 

Для проверки правильности разработанной структуры применяются нормальные формы – правила, которым должны отвечать отношения. Нормальные формы имеют номера и обладают следующим свойством: если структура базы данных отвечают нормальной форме с некоторым номером, то она отвечает и всем другим нормальным формам с меньшими номерами:

 Нормальные формы

 

Выделяют три основные нормальные формы.

 

Первая нормальная форма (1НФ) – таблица соответствует первой нормальной форме, если в ней отсутствуют повторяющиеся группы. Повторяющаяся группа – это столбец, в строках (полях) которого может храниться одновременно несколько значений. Такому столбцу соответствует многозначный атрибут модели «сущность-связь». Примером такого атрибута может быть «Номер телефона» в случае, если у человека их несколько (в одном из полей тогда может храниться значение «125-34-56, 8-906-543-24-09»). В этом случае правильным решением будет создание новой таблицы (сущности) для хранения экземпляров значений из повторяющейся группы.

 

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

 

Кафедры

Код института

Код кафедры

Название

Адрес

Телефон

 

И пусть каждый описываемый институт имеет только одно здание (единственный адрес). Это будет означать, что адрес кафедры не будет зависеть от значения атрибута «Код кафедры», а значит атрибут «Адрес» целесообразно вынести в другую сущность, например, сущность Институт.

 

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

 

Кафедры

Код кафедры

Название

Здание

Адрес

Телефон

 

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

 

Данные нормальные формы не исчерпывают все существующие нормальные формы. Отметим еще несколько важных случаев.

 

Нормальная форма Бойса-Кодда (НФБК) – устраняет некоторые недостатки третьей нормальной формы, принимая во внимание потенциальные ключи, то есть атрибуты или наборы атрибутов, которые могли бы выступать в роли первичного ключа.

 

Четвертая нормальная форма (4НФ) – выявляет многозначные зависимости. Многозначная зависимость – это соответствие одному значению некоторого атрибута A нескольких значений атрибута B и нескольких значений атрибута C, не связанных между собой.

 

Пятая нормальная форма (5НФ) – рассматривает еще более сложные случаи многозначных зависимостей.

 

Доменно-ключевая нормальная форма (ДКНФ) – определяет необходимое и достаточное условие отсутствия ошибок (аномалий). Алгоритм для преобразования таблиц к этой форме в настоящее время неизвестен.