Полная функциональная зависимость: если А и B - атрибуты отношения, то атрибут B находится в полной функциональной зависимости от атрибута А, если атрибут B является функционально зависимым от А, но не зависит ни от одного собственного подмножества атрибута А.
Функциональная зависимость А->B является полной функциональной зависимостью, если удаление какого-либо атрибута из А приводит к утрате этой зависимости. Функциональная зависимость А->В называется частичной, если в А есть некий атрибут, при удалении которого эта зависимость сохраняется.
Вторая нормальная форма применяется к отношениям с составными ключами, т.е. к таким отношениям, первичный ключ которых состоит из двух или нескольких атрибутов. Дело в том, что отношение с первичным ключом на основе единственного атрибута всегда находится, по крайней мере, в форме 2НФ. Отношение, которое не находится в форме 2НФ, может быть подвержено аномалиям обновления.
Вторая нормальная форма (2НФ) - отношение, которое находится в первой нормальной форме и каждый атрибут которого, не входящий в состав первичного ключа, характеризуется полной функциональной зависимостью от этого первичного ключа.
|
|
Нормализация отношений 1НФ с приведением к форме 2НФ предусматривает устранение частичных зависимостей. Если в отношении между атрибутами существует частичная зависимость, то функционально-зависимые атрибуты удаляются из него и помещаются в новое отношение вместе с копией их детерминанта.
Пример приведения таблицы ко второй нормальной форме (Википедия)
Пусть Начальник и Должность вместе образуют первичный ключ в такой таблице:
Начальник | Должность | Зарплата | Наличие компьютера |
Гришин | Кладовщик | Нет | |
Васильев | Программист | Есть | |
Васильев | Кладовщик | Нет |
Зарплату сотруднику каждый начальник устанавливает сам, но её границы зависят от должности. Наличие же компьютера у сотрудника зависит только от должности, то есть зависимость от первичного ключа неполная.
В результате приведения к 2NF получаются две таблицы:
Начальник | Должность | Зарплата |
Гришин | Кладовщик | |
Васильев | Программист | |
Васильев | Кладовщик |
Здесь первичный ключ, как и в исходной таблице, составной, но единственный не входящий в него атрибут Зарплата зависит теперь от всего ключа, то есть полно.
Должность | Наличие компьютера |
Кладовщик | Нет |
Программист | Есть |