Нормализация данных и нормальные формы реляционных баз данных
Важным этапом проектирования базы данных является процесс нормализации. Нормализацией базы данных называется процесс приведения ее структуры в соответствие с некоторым набором формальных правил.
Сущности и связи, описанные в процессе инфологического моделирования предметно области, могут быть преобразованы в отношения (реляционную модель) различными способами. Выявить наиболее подходящие реляционной модели способы – очень важная задача.
Собственно, нормализация позволяет устранить возможные недостатки в реляционной структуре данных и устранить ошибки (аномалии) проектирования. Нормализация особенно актуальна в случае больших проектов, содержащих большое число сущностей со сложными взаимосвязями.
Для проверки правильности разработанной структуры применяются нормальные формы – правила, которым должны отвечать отношения. Нормальные формы имеют номера и обладают следующим свойством: если структура базы данных отвечают нормальной форме с некоторым номером, то она отвечает и всем другим нормальным формам с меньшими номерами:
Выделяют три основные нормальные формы.
Первая нормальная форма (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НФ) – рассматривает еще более сложные случаи многозначных зависимостей.
Доменно-ключевая нормальная форма (ДКНФ) – определяет необходимое и достаточное условие отсутствия ошибок (аномалий). Алгоритм для преобразования таблиц к этой форме в настоящее время неизвестен.
Добавить комментарий