Определение 1. Отношение находится в 3НФ, если оно находится в 2НФ, и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.
Альтернативное определение.
Определение 2. Отношение находится в 3НФ в том и только в том случае, если все неключевые атрибуты отношения взаимно независимы и полностью зависят от ключа.
Доказать справедливость этого утверждения несложно. Действительно, то, что неключевые атрибуты полностью зависят от первичного ключа, означает, что данное отношение находится в форме 2НФ. Взаимная независимость атрибутов означает отсутствие всякой зависимости между атрибутами отношения, в том числе и транзитивной зависимости между ними. Таким образом, второе определение 3НФ сводится к первому определению.
Если в отношении R1 транзитивные зависимости отсутствуют, то в отношении R2 они есть:
ФИО→Должн→Оклад
ФИО→Оклад→Должн
ФИО→Стаж→Д_Стаж,
Транзитивные зависимости также порождает избыточное дублирование информации в отношении. Устраним их. Для этого используя операцию проекции на атрибуты, являющуюся причиной транзитивных зависимостей преобразуем отношение R2, получив при этом отношенияR3, R4 и R5, каждое из которых находится в 3НФ.
|
|
R3
ФИО | Должн | Стаж | Каф |
Иванов И.М. | преп | ||
Петров М.И. | Ст.преп | ||
Сидоров Н.Г. | преп | ||
Егоров В.В. | преп |
R4
Должн | Оклад |
Преп | |
Ст.преп |
R5
Стаж | Д_Стаж |
Рис. Отношения БД в 3НФ
Заметим, что отношение R2 можно преобразовать по-другому, а именно: в отношении R3 вместо атрибута Должн взять атрибут Оклад.
На практике построение 3НФ в большинстве случаев является достаточным и приведением к ним процесс проектирования реляционной БД заканчивается. Действительно, приведение отношений к 3НФ в нашем примере, привело к устранению избыточного дублирования.
Если в отношении имеется зависимость атрибутов составного ключа от неключевых атрибутов, то необходимо перейти к усиленной 3НФ.