17.5. 2НФ

Отношение находится во второй нормальной форме (2НФ) тогда и только тогда, когда она находится в 1НФ и каждый неключевой атрибут полностью зависит от первичного ключа.

2НФ имеет смысл только для отношений, имеющих составной первичный ключ.

Особенности 2НФ:

  1. отношение представлено в 1НФ,

  2. если отношение имеет простой первичный ключ, то оно представлено в 2НФ,

  3. если отношение имеет составной первичный ключ, то каждый неключевой атрибут полностью зависит от первичного ключа (не должно быть зависимости от части ключа).

Оба отношения SECOND и SP находятся во 2НФ, а отношение FIRST не находится в ней. Всякое отношение, которое находится в 1НФ и не находится в 2НФ, всегда можно свести к эквивалентному набору отношений, находящихся в 2НФ.Но структура SECOND-SP может еще вызвать проблемы. SP уже находится в 3НФ. Неключевые атрибуты же SECOND не являются взаимно независимыми. Зависимость STATUS от S# является транзитивной (через CITY), то есть каждое значение S# определяет значение CITY, а значение CITY определяет значение STATUS.

Если выполняются зависимости A ® В и B ®C, то выполнятся А ® С. Говорят, что С транзитивно зависит от А. Транзитивные зависимости вызывают проблемы.

INSERT: нельзя включить данные о некотором городе, обладающим некоторым статусом, до тех пор пока в этом городе не существует конкретного поставщика.

DELETE: при удалении кортежа для некоторого города будет удалена информация о данном поставщике и том каким статусом обладал этот город. Здесь опять причиной неприятности является совместная информация: информация о поставщиках и вместе с ней информация о городах. Необходимо разделить информацию.

UPDATE: статус повторяется для каждого города несколько раз. Возникает проблема при изменении значения статуса.

Заменяем SECOND двумя проекциями SC {S#, CITY} CS {CITY, STATUS}. Переработанная структура преодолевает все описанные проблемы