Третья нормальная форма

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Третья нормальная форма (англ. Third normal form; сокращённо 3NF) — одна из возможных нормальных форм отношения в реляционной базе данных. 3NF была изначально сформулирована Э. Ф. Коддом в 1971 году.

Определение[править | править вики-текст]

Переменная отношения R находится в 3NF тогда и только тогда, когда выполняются следующие условия:

Пояснения к определению:

Неключевой атрибут отношения R — это атрибут, который не принадлежит ни одному из потенциальных ключей R.

Функциональная зависимость множества атрибутов Z от множества атрибутов X (записывается XZ, произносится «икс определяет зет») является транзитивной, если существует такое множество атрибутов Y, что XY и YZ. При этом ни одно из множеств X, Y и Z не является подмножеством другого, то есть функциональные зависимости XZ, XY и YZ не являются тривиальными.

Определение 3NF, эквивалентное определению Кодда, но по-другому сформулированное, дал Карло Заниоло в 1982 году. Согласно ему, переменная отношения находится в 3NF тогда и только тогда, когда для каждой из её функциональных зависимостей X → A выполняется хотя бы одно из следующих условий:

  • Х содержит А (то есть X → A — тривиальная функциональная зависимость)
  • Х — суперключ
  • А — ключевой атрибут (то есть А входит в состав потенциального ключа).

Определение Заниоло четко определяет разницу между 3NF и более строгой нормальной формой Бойса-Кодда (НФБК): НФБК исключает третье условие («А — ключевой атрибут»).

«Ничего, кроме ключа»[править | править вики-текст]

Запоминающееся и, по традиции, наглядное резюме определения 3NF Кодда было дано Биллом Кентом: каждый неключевой атрибут «должен предоставлять информацию о ключе, полном ключе и ни о чём, кроме ключа»[1].

Условие зависимости от «полного ключа» неключевых атрибутов обеспечивает то, что отношение находится во второй нормальной форме; а условие зависимости их от «ничего, кроме ключа» — то, что они находятся в третьей нормальной форме.

Крис Дейт говорит о резюме Кента как об «интуитивно привлекательной характеристике» 3NF, и замечает, что с небольшим изменением она может служить и как определение более строгой нормальной формы Бойса-Кодда: «каждый атрибут должен предоставлять информацию о ключе, полном ключе и ни о чём, кроме ключа». Вариант определения 3NF Кента является менее строгим, чем вариант нормальной формы Бойса-Кодда в формулировке Дейта, поскольку первая утверждает только то, что неключевые атрибуты зависят от ключей. Первичные атрибуты (которые являются ключами или их частями) вовсе не должны быть функционально зависимыми; каждый из них предоставляет информацию о ключе предоставлением самого ключа или его части. Здесь следует отметить, что это правило справедливо только для неключевых атрибутов, так как применение его ко всем атрибутам будет полностью запрещать все сложные альтернативные ключи, поскольку каждый элемент такого ключа будет нарушать условие «полного ключа».

Пример[править | править вики-текст]

Рассмотрим в качестве примера отношение, которое находится во 2NF, но не соответствует 3NF:

R1
Сотрудник Отдел Телефон
Гришин Бухгалтерия 11-22-33
Васильев Бухгалтерия 11-22-33
Петров Снабжение 44-55-66

В отношении атрибут «Сотрудник» является первичным ключом. Личных телефонов у сотрудников нет, и телефон сотрудника зависит исключительно от отдела.

Таким образом, в отношении существуют следующие функциональные зависимости: Сотрудник → Отдел, Отдел → Телефон, Сотрудник → Телефон.

Зависимость Сотрудник → Телефон является транзитивной, следовательно, отношение не находится в 3NF.

В результате разделения отношения R1 получаются два отношения, находящиеся в 3NF:

R2
Отдел Телефон
Бухгалтерия 11-22-33
Снабжение 44-55-66
R3
Сотрудник Отдел
Гришин Бухгалтерия
Васильев Бухгалтерия
Петров Снабжение


Исходное отношение R1 при необходимости легко получается в результате операции соединения отношений R2 и R3.

Примечания[править | править вики-текст]

  1. Kent, William. «A Simple Guide to Five Normal Forms in Relational Database Theory», Communications of the ACM 26 (2), Feb. 1983, pp. 120—125.

Литература[править | править вики-текст]

Отечественная

Переводная

Иностранная

См. также[править | править вики-текст]