Вторая нормальная форма (2нф).
Отношение находится во второй нормальной форме тогда и только тогда, когда оно находится в первой нормальной форме, и каждый неключевой атрибут неприводимо зависит от первичного ключа.
Вернёмся опять к отношениям Вторая и Поставки (рис.4.5). C отношением Поставки мы не испытываем никаких затруднений, и оно остаётся до конца без изменений, т.е. включая 3НФ. В отношении же Вторая атрибуты не являются взаимно независимыми. В частности, зависимость атрибута Статус от Код_поставщика хотя и являются функциональной и неприводимой, одновременно является и транзитивной, т.е. каждое значение Код_поставщика определяет Город, а Город определяет Статус (ГородСтатус). Следовательно, транзитивные зависимости могут опять привести к аномалиям при обновлениях.
Операция INSERT:
Нельзя указать, что все поставщики из Пскова обладают статусом 50, пока в этом городе не существует конкретного поставщика (задано некое правило с ограничением целостности).
Операция DELETE:
При удалении из отношения Вторая кортежа для некоторого города будет удалена некоторая информация не только о поставщике, но и о статусе этого города.
Например, при удалении кортежа S5 будет утрачена информация о том, что для Твери был задан статус 30.
Операция UPDАTE:
В отношении Вторая в атрибуте Статус наблюдается некоторая избыточность. Так, при изменении статуса Москва с 20 на 30 – возникает проблема поиска всех кортежей для Москвы.
Вновь нужно заменить исходное отношение Вторая двумя проекциями:
Город_поставщика {Код_поставщика, Город}
Статус_города {Город, Статус}
Диаграммы Ф3 для этих двух отношений даны на Рис.4.7, а таблицы – на Рис.4.8.
Рис. 4.7. Диаграммы ФЗ отношений Город_поставщика и Статус_города
Рис. 4.8. Отношения Город_поставщика и Статус_города.
Сравнивая диаграммы Рис.4.5 с Рис.4.7, можно заметить, что благодаря дальнейшей декомпозиции удалось исключить транзитивную зависимость атрибута Статус от атрибута Код_поставщика. Можно утверждать, что атрибуты Статус в отношении Вторая описывает не сущность, идентифицируемую первичным ключом (т.е. поставщика), а город поставщика.
Третья нормальная форма ( 3нф ).
Отношение находится в третьей нормальной форме тогда и только тогда, когда оно находится во второй нормальной форме, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Отношение Город_поставщика и Статус_города находится в 3НФ, причем первичными ключами в них являются атрибуты Код_поставщика и Город соответственно.
Как говорилось ранее, процесс нормализации обратим. Отношение, которое находится в 2НФ, всегда может быть приведено к эквивалентному набору отношений 3НФ. Никакая информация при таком приведении не утрачивается. В 3НФ может содержаться информация, которая не может быть представлена 2НФ (например, статус Пскова равен 50). Из этого следует, что комбинация отношений Вторая – Поставки может рассматриваться как более правдоподобное представление реального мира, чем отношение Первая, а отношениеГород_поставщика – Статус_города правдоподобнее отношения Вторая (2НФ).
В заключение хотелось бы сказать, нельзя с первого взгляда на таблицу с данными для заданного отношения определить, находится ли оно, например, в 3НФ. Для этого необходимо представлять себе их смысл, т.е. существующие между ними зависимости. Следует также отметить: зная даже о зависимости данного отношения, нельзя доказать то, что оно находится в 3НФ. Можно лишь показать, что если данные не нарушают никаких зависимостей, и если это так, высказать предположение о том, что эти данные не противоречат гипотезе о принадлежности отношения к 3НФ.