Нормальная форма игры
- 1 year ago
- 0
- 0
Третья нормальная форма ( англ. Third normal form ; сокращённо 3NF ) — одна из возможных нормальных форм отношения в реляционной базе данных . 3NF была изначально сформулирована Э. Ф. Коддом в 1971 году .
Переменная отношения R находится в 3NF тогда и только тогда, когда выполняются следующие условия:
Пояснения к определению:
Неключевой атрибут отношения R — это атрибут, который не принадлежит ни одному из потенциальных ключей R .
Функциональная зависимость множества атрибутов Z от множества атрибутов X (записывается X → Z , произносится «икс определяет зет») является транзитивной , если существует такое множество атрибутов Y , что X → Y и Y → Z . При этом ни одно из множеств X , Y и Z не является подмножеством другого, то есть функциональные зависимости X → Z , X → Y и Y → Z не являются тривиальными , а также отсутствует функциональная зависимость Y → X .
Определение 3NF, эквивалентное определению Кодда, но по-другому сформулированное, дал в 1982 году . Согласно ему, переменная отношения находится в 3NF тогда и только тогда, когда для каждой из её функциональных зависимостей X → A выполняется хотя бы одно из следующих условий:
Определение Заниоло чётко определяет разницу между 3NF и более строгой нормальной формой Бойса-Кодда (НФБК): НФБК исключает третье условие (« А — ключевой атрибут»).
Запоминающееся и, по традиции, наглядное резюме определения 3NF Кодда было дано : каждый неключевой атрибут «должен предоставлять информацию о ключе, полном ключе и ни о чём, кроме ключа» .
Условие зависимости от «полного ключа» неключевых атрибутов обеспечивает то, что отношение находится во второй нормальной форме; а условие зависимости их от «ничего, кроме ключа» — то, что они находятся в третьей нормальной форме.
Крис Дейт говорит о резюме Кента как об «интуитивно привлекательной характеристике» 3NF, и замечает, что с небольшим изменением она может служить и как определение более строгой нормальной формы Бойса-Кодда : «каждый атрибут должен предоставлять информацию о ключе, полном ключе и ни о чём, кроме ключа». Вариант определения 3NF Кента является менее строгим, чем вариант нормальной формы Бойса-Кодда в формулировке Дейта, поскольку первая утверждает только то, что неключевые атрибуты зависят от ключей. Первичные атрибуты (которые являются ключами или их частями) вовсе не должны быть функционально зависимыми; каждый из них предоставляет информацию о ключе предоставлением самого ключа или его части. Здесь следует отметить, что это правило справедливо только для неключевых атрибутов, так как применение его ко всем атрибутам будет полностью запрещать все сложные альтернативные ключи, поскольку каждый элемент такого ключа будет нарушать условие «полного ключа».
Рассмотрим в качестве примера переменную отношения R1:
Сотрудник | Отдел | Телефон |
---|---|---|
Гришин | Бухгалтерия | 11-22-33 |
Васильев | Бухгалтерия | 11-22-33 |
Петров | Снабжение | 44-55-66 |
Каждый сотрудник относится исключительно к одному отделу; каждый отдел имеет единственный телефон. Атрибут Сотрудник является первичным ключом. Личных телефонов у сотрудников нет, и телефон сотрудника зависит исключительно от отдела.
В примере существуют следующие функциональные зависимости: Сотрудник → Отдел , Отдел → Телефон , Сотрудник → Телефон .
Переменная отношения R1 находится во второй нормальной форме , поскольку каждый атрибут имеет неприводимую функциональную зависимость от потенциального ключа Сотрудник .
Зависимость Сотрудник → Телефон является транзитивной, следовательно, отношение не находится в третьей нормальной форме.
В результате разделения R1 получаются две переменные отношения, находящиеся в 3NF:
|
|
Исходное отношение R1 при необходимости легко получается в результате операции соединения отношений R2 и R3.