Четвертая нормальная форма

Нормальная форма, используемая при нормализации базы данных

Четвертая нормальная форма ( 4NF ) — это нормальная форма, используемая при нормализации базы данных . Введенная Рональдом Фейджином в 1977 году, 4NF является следующим уровнем нормализации после нормальной формы Бойса–Кодда (BCNF). В то время как вторая , третья и нормальная форма Бойса–Кодда связаны с функциональными зависимостями , 4NF связана с более общим типом зависимости, известным как многозначная зависимость . Таблица находится в 4NF тогда и только тогда , когда для каждой из ее нетривиальных многозначных зависимостей X Y X является суперключом — то есть X является либо потенциальным ключом , либо его надмножеством. [1] {\displaystyle \twoheadrightarrow}

Многозначные зависимости

Если заголовки столбцов в таблице реляционной базы данных разделены на три непересекающиеся группы X , Y и Z , то в контексте конкретной строки мы можем ссылаться на данные под каждой группой заголовков как на x , y и z соответственно. Многозначная зависимость X Y означает, что если мы выберем любой x , фактически встречающийся в таблице (назовем этот выбор x c ), и составим список всех комбинаций x c yz , которые встречаются в таблице, мы обнаружим, что x c связан с теми же записями y независимо от z . Таким образом, по сути, наличие z не дает полезной информации для ограничения возможных значений y . {\displaystyle \twoheadrightarrow}

Тривиальная многозначная зависимость X Y — это зависимость, в которой Y является подмножеством X или X и Y вместе образуют весь набор атрибутов отношения. {\displaystyle \twoheadrightarrow}

Функциональная зависимость — это частный случай многозначной зависимости. В функциональной зависимости XY каждый x определяет ровно один y , никогда больше одного.

Пример

Рассмотрим следующий пример:

Варианты доставки пиццы
РесторанРазнообразие пиццыЗона доставки
А1 ПиццаТолстая корочкаСпрингфилд
А1 ПиццаТолстая корочкаШелбивилль
А1 ПиццаТолстая корочкаСтолица
А1 ПиццаФаршированная корочкаСпрингфилд
А1 ПиццаФаршированная корочкаШелбивилль
А1 ПиццаФаршированная корочкаСтолица
Элитная пиццаТонкая корочкаСтолица
Элитная пиццаФаршированная корочкаСтолица
Пицца ВинченцоТолстая корочкаСпрингфилд
Пицца ВинченцоТолстая корочкаШелбивилль
Пицца ВинченцоТонкая корочкаСпрингфилд
Пицца ВинченцоТонкая корочкаШелбивилль

Каждая строка указывает, что данный ресторан может доставить данный сорт пиццы в данный район.

Таблица не имеет неключевых атрибутов, поскольку ее единственным потенциальным ключом является {Restaurant, Pizza variation, Delivery area}. Следовательно, она соответствует всем нормальным формам вплоть до BCNF. Однако если предположить, что разновидности пиццы, предлагаемые рестораном, не зависят от области доставки, или наоборот, что области доставки не зависят от разновидностей пиццы (т. е. ресторан предлагает все разновидности пиццы, которые он производит, во все области, которые он поставляет), то она не соответствует 4NF. Проблема в том, что таблица содержит две нетривиальные многозначные зависимости от атрибута {Restaurant} (который не является суперключом). Зависимости следующие:

  • {Ресторан} {Вариант пиццы} {\displaystyle \twoheadrightarrow}
  • {Ресторан} {Зона доставки} {\displaystyle \twoheadrightarrow}

Эти нетривиальные многозначные зависимости от не-суперключа отражают тот факт, что разновидности пиццы, предлагаемые рестораном, не зависят от областей, в которые ресторан осуществляет доставку. Такое положение дел приводит к избыточности в таблице: например, нам трижды сообщается, что A1 Pizza предлагает пиццу с начинкой, и если A1 Pizza начнет производить пиццу с сырной корочкой, то нам нужно будет добавить несколько строк, по одной для каждой области доставки A1 Pizza. Более того, ничто не мешает нам сделать это неправильно: мы можем добавить строки с сырной корочкой для всех областей доставки A1 Pizza, кроме одной, тем самым не соблюдая многозначную зависимость {Ресторан} {Разновидность пиццы}. {\displaystyle \twoheadrightarrow}

Чтобы исключить возможность возникновения таких аномалий, мы должны поместить факты о предлагаемых сортах в отдельную таблицу, нежели факты о районах доставки, получив в результате две таблицы, которые обе находятся в 4NF:

Ассортимент по ресторанам
РесторанРазнообразие пиццы
А1 ПиццаТолстая корочка
А1 ПиццаФаршированная корочка
Элитная пиццаТонкая корочка
Элитная пиццаФаршированная корочка
Пицца ВинченцоТолстая корочка
Пицца ВинченцоТонкая корочка
Зоны доставки по ресторанам
РесторанЗона доставки
А1 ПиццаСпрингфилд
А1 ПиццаШелбивилль
А1 ПиццаСтолица
Элитная пиццаСтолица
Пицца ВинченцоСпрингфилд
Пицца ВинченцоШелбивилль

Напротив, если бы разновидности пиццы, предлагаемые рестораном, иногда действительно различались в зависимости от зоны доставки, то исходная таблица из трех столбцов удовлетворяла бы 4NF.

Рональд Фейгин продемонстрировал, что всегда возможно достичь 4NF. [2] Теорема Риссанена применима также к многозначным зависимостям .

4NF на практике

В статье 1992 года Маргарет С. Ву отмечает, что преподавание нормализации баз данных обычно останавливается на 4NF, возможно, из-за убеждения, что таблицы, нарушающие 4NF (но соответствующие всем низшим нормальным формам), редко встречаются в бизнес-приложениях. Однако это убеждение может быть неточным. Ву сообщает, что в исследовании сорока организационных баз данных более 20% содержали одну или несколько таблиц, которые нарушали 4NF, но соответствовали всем низшим нормальным формам. [3]

Нормализация за пределами 4NF

Только в редких случаях таблица 4NF не соответствует высшей нормальной форме 5NF . Это ситуации, в которых сложное реальное ограничение, регулирующее допустимые комбинации значений атрибутов в таблице 4NF, не подразумевается в структуре этой таблицы.

Смотрите также


Ссылки

  1. ^ "Схема отношений R* находится в четвертой нормальной форме (4NF), если всякий раз, когда нетривиальная многозначная зависимость X Y выполняется для R*, то также выполняется функциональная зависимость X → A для каждого имени столбца A из R*. Интуитивно все зависимости являются результатом ключей". Фейгин, Рональд (сентябрь 1977 г.). "Многозначные зависимости и новая нормальная форма для реляционных баз данных" (PDF) . ACM Transactions on Database Systems . 2 (1): 262– 278. CiteSeerX 10.1.1.69.1872 . doi :10.1145/320557.320571. S2CID  14617155. Архивировано из оригинала (PDF) 29.11.2007 г. Получено 26.04.2008 г. {\displaystyle \twoheadrightarrow}  
  2. Фейгин, стр. 268.
  3. ^ Wu, Margaret S. (март 1992 г.). «Практическая необходимость четвертой нормальной формы». ACM SIGCSE Bulletin . 24 (1): 19– 23. doi :10.1145/135250.134515.

Дальнейшее чтение

  • Дейт, К.Дж. (1999), Введение в системы баз данных (8-е изд.). Эддисон-Уэсли Лонгман. ISBN 0-321-19784-4 . 
  • Кент, В. (1983) Простое руководство по пяти нормальным формам в теории реляционных баз данных , Communications of the ACM, т. 26, стр. 120–125
Взято с "https://en.wikipedia.org/w/index.php?title=Четвертая_нормальная_форма&oldid=1272842130"