Вторая нормальная форма
Вторая нормальная форма основана на понятии полной функциональной зависимости. Функциональная зависимость (FD-functional dependency). Описывает связь между атрибутами отношения. Пусть дано отношение R, содержащее атрибуты А и В. Атрибут В функционально зависит от атрибута А, запись: АàВ, если для любых двух кортежей t1, t2 из выполнения условия t1(А)= t2(А) следует, что t1(В)= t2(В). При этом каждый из атрибутов А или В может состоять из нескольких атрибутов. Рассмотрим отношение с атрибутами А и В, где атрибут В функционально зависит от атрибута А. Если нам известно значение атрибута А, то при рассмотрении отношения с такой зависимостью, в любой момент времени во всех строках этого отношения, содержащих указанное значение атрибута А, мы найдем одно и то же значение атрибута В. Таким образом, если две строки имеют одно и то же значение атрибута А, то они обязательно имеют одно и то же значение атрибута В. Однако для заданного значения атрибута В может существовать несколько различных значений атрибута А. Зависимость между атрибутами А и В можно схематически представить в виде диаграммы, показанной на рис. 1. Рис.1. Диаграмма функциональной зависимости
Тривиальной (trivial) функциональной зависимостью называется зависимость типа А—>В, где атрибут В зависит от некоторого подмножества атрибута А. Функциональная зависимость является смысловым (или семантическим) свойством атрибутов отношения. Семантика отношения указывает, как его атрибуты могут быть связаны друг с другом, а также определяет функциональные зависимости между атрибутами в виде ограничений,наложенных на некоторые атрибуты. Частичной функциональной зависимостью называется такая зависимость А—>В, если в А есть некий атрибут, при удалении которого эта зависимость сохраняется. Все атрибуты, которые не являются частью первичного ключа должны функционально зависеть от него. В отношении График можно выделить следующие Ф-зависимости: Рейс à Галерея Детерминантом Ф-зависимости называется атрибут или группа атрибутов, расположенных на диаграмме функциональной зависимости слева от символа стрелки. Рассмотрим видоизмененное отношение ГРАФИК: Таблица 3. Видоизмененное отношение «График»
Можно выделить следующие Ф-зависимости: Рейс à Галерея (детерминант- Рейс), Рейс àВремя, {Пилот, Дата, Время} àРейс (детерминант Пилот, Дата, Время), {Рейс, Дата} àПилот, Галерея. Атрибут Галерея частично зависит от Рейс, Дата, а Пилот полностью зависит от Рейс, Дата. Обнаружение частичных зависимостей внутри отношения показывает, что оно не находится в 2НФ. Для преобразования отношения в 2НФ требуется создать новые отношения, причем так, чтобы атрибуты, не входящие в первичный ключ, были помещены в них вместе с копией первичного ключа, от которой они функционально зависят. Функциональная зависимость А àВ называется полной Ф-зависимостью, если удаление какого-либо атрибута из А приводит к утрате этой зависимости. В противном случае, частичной. Например, Ф-зависимость {Пилот, Дата, Время} àРейс является полной. Вторая НФ применяется к отношениям с составными ключами, т.е. к отношениям, первичный ключ которых состоит из 2 или более атрибутов. Отношение с единственным атрибутом в качестве первичного ключа всегда находится по крайней мере, в 2НФ. Отношение, которое не находится в 2НФ, может страдать от аномалий обновления. Нормализация 1НФ-отношений с образованием 2НФ-отношений включает устранение частичных зависимостей, Отношение находится в 2НФ, если оно находится в 1 НФ и каждый атрибут которого, не входящий в состав первичного ключа, характеризуется полной Ф-зависимостью от этого первичного ключа. Выберем в качестве ключа {Рейс, Дата} и рассмотрим зависимости: {Рейс, Дата} àГалерея Галерея частично зависит от {Рейс, Дата}. Поэтому отношение не находится в 2НФ. Приведем его к 2НФ разложением: Многие проблемы этого примера исчезнут, если выделить в отдельные таблицы сведения о рейсе, дата и пилоте, рейсе и галерее, т.е. создать связующие таблицы "Пилот" и "Галерея"
Таблица 4. Отношение Пилот
Таблица 5. Отношение Галерея
Теперь этих два отношения находятся во второй нормальной форме, поскольку каждый атрибут, не входящий в первичный ключ, полностью функционально зависит от первичного ключа отношения. Мы произвели декомпозицию отношения «График» на отдельные отношения «Пилот» и «Галерея». Однако процесс декомпозиции имеет два важных свойства, которые следует учитывать. Первое из них – это свойство соединения без потерь (lossless-join),которое позволяет восстановить любой кортеж исходного отношения, используя соответствующие кортежи меньших отношений, полученных в результате декомпозиции. Второе – свойство сохранения зависимости (dependency preservation), которое позволяет сохранить ограничения, наложенные на исходное отношение, посредством наложения некоторых ограничений на каждое из меньших отношений, полученных в результате декомпозиции.
|