Нормализация отношений
Нормализация – это приведение, к лучшей форме относительно включения, удаление и модификации.
Процесс проектирования баз данных с использованием метода нормальных форм является итерационным и заключается в последовательном переводе отношений из первой нормальной формы в нормальные формы более высокого порядка по определенным правилам. Каждая следующая нормальная форма ограничивает определенный тип функциональных зависимостей, устраняет соответствующие аномалии при выполнении операций над отношениями базы данных и сохраняет свойства предшествующих нормальных форм.
Для определения структуры каждой таблицы необходимо выполнить анализ функциональных зависимостей, т. е. выяснить какие поля зависят от других полей, а затем поля с одинаковой зависимостью организовать в отдельную таблицу. Таким образом, в одну и ту же таблицу не нужно включать поля, являющиеся произвольными от других полей. В результате количество необходимых таблиц определяется числом функциональных зависимостей. Формально нормализация данных обеспечена, если набор таблиц удовлетворяет первым трем правилам, которые называются нормальными формами.
Этот метод является классическим методом проектирования реляционной базы данных. Он основан на понятии зависимости между атрибутами отношений. Существуют следующие основные виды зависимостей: функциональные, транзитивные и многозначные.
Атрибут В функционально зависит о атрибута А, если каждому значению А соответствует в точности одно значение В (обозначение: А®В). Функциональная взаимозависимость атрибутов А и В означает, что имеется взаимнооднозначное соответствие, т.е. А®В и В®А (А«В). Функциональная частичная зависимость – зависимость неключевого атрибута от части составного ключа. Полная функциональная зависимость – зависимость неключевого атрибута от всего составного ключа.
Атрибут С зависит от атрибута А транзитивно, если для атрибутов А,В,С выполняется условие А®В и В®С, но обратная зависимость отсутствует.
Атрибут В многозначно зависит от атрибута А, если каждому значению А соответствует множество значений В, не связанных с другими атрибутами. Эти зависимости могут быть «один ко многим», «многие к одному» или «многие ко многим» (1:m, m:1, m:m соответственно), обозначаемые соответственно АÞВ, ВÞА и АÛВ.
Два и более атрибута называются взаимнонезависимыми, если не один из этих атрибутов не является функционально-зависимым от других атрибутов (В не зависит от А: АØ ®В; взаимнонезависимы: АØ =В).
Процесс проектирования базы данных с использованием метода нормальных форм является итерационным и заключается в последовательном переводе отношения из первой нормальной формы (НФ) в нормальную форму более высокого порядка по определенным правилам. Перевод отношения в следующую нормальную форму осуществляется методом декомпозиции без потерь, основной операцией этого метода является проекция. Каждая следующая нормальная форма ограничивает определенный тип зависимостей, устраняет соответствующие аномалии и сохраняет свойства предшествующих нормальных форм [10].
Выделяют следующую последовательность нормальных форм:
- первая нормальная форма (1НФ);
- вторая нормальная форма (2НФ);
- третья нормальная форма (3НФ);
-усиленная нормальная форма или нормальная форма Бойса-Кодда (БКНФ);
- четвертая нормальная форма (4НФ);
- пятая нормальная форма (5НФ).
Отношение находится в 1НФ, если все его атрибуты являются простыми (имеют единственное значение). Исходное отношение строится таким образом, чтобы оно было в 1НФ.
Отношение находится в 2НФ, если оно находится в 1НФ, и каждый неключевой атрибут функционально-полно зависит от первичного ключа.
Отношение находится в 3НФ, если оно находится в 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа. Отношение находится в 3НФ в том и только в том случае, если все неключевые атрибуты отношения взаимнонезависимы и полностью зависят от первичного ключа.
Если в отношении имеется зависимость атрибутов составного ключа от неключевых атрибутов, то нужно перейти к БКНФ. Отношение находится в БКНФ, если оно находится в 3НФ, и в нем отсутствуют зависимости ключей от неключевых атрибутов.
4НФ. В произвольном отношении R(A,B,C) может одновременно существовать многозначная зависимость АÞВ и АÞС. Это обстоятельство обозначим как АÞВ|С, т.е. атрибуты В и С многозначно зависят от А.
Теорема Фейджина: отношение R(A,B,C) можно спроецировать без потерь в отношение R1(A,B) и R2(A,C) в том и только в том случае, когда существует зависимость АÞВ|С.
Отношение R находится в 4НФ в том и только в том случае, когда существует многозначная зависимость АÞВ, а все остальные атрибуты R функционально зависят от А.
5НФ. Результатом нормализации предыдущих отношений были два новых отношения, иногда это сделать не удается или отношения заведомо имеют нежелательные свойства. В этом случае выполняют декомпозицию отношения более чем на два отношения.
Отношение R(X,Y,…,Z) удовлетворяет зависимости соединения, которое обозначим как *(X,Y,…,Z), в том и только в том случае, если R восстанавливается без потерь путем соединения своих проекций на X,Y,…,Z.
Отношение R находится в 5НФ или нормальной форме проекции-соединения (PJ/NF) в том и только в том случае, когда любая зависимость соединения в R следует из существования некоторого возможного ключа в R.
Эта форма является последней из известных, условия ее получения довольно нетривиальны и поэтому она почти не используется на практике. Более того, она имеет определенные недостатки, поэтому на практике обычно ограничиваются структурой базу данных, соответствующей 3НФ или БКНФ.
В данном случае рациональные варианты группировки атрибутов удовлетворяют требованиям нормальных форм.
Выбранные ключи отличаются минимальной избыточностью. Не возникает никаких трудностей при выполнении операций включение, удаление и модификации.
Перестройка набора отношений при выделении новых типов минимальна. Разброс времени ответа на запросы к БД небольшой.
Нормализованы отношения, исключены функциональные транзитивные зависимости. Проверено соответствие отношений требованиям третьей нормальной формы [11].