Нормальные формы: 4 против 5 - PullRequest
0 голосов
/ 23 мая 2018

Я изо всех сил пытаюсь понять 4NF, 5NF и их разницу.

Вот способ, которым я бы описал 4 / 5NF (или, как я бы описал шаги для его достижения) тому, кто не 'я знаюЯ утверждаю это, потому что это покажет то, что я действительно понял.

Как правило, отношение сущностей N: N должно быть реализовано с помощью таблицы соединений для их возможных комбинаций.Если есть 3 или более сущностей, связанных с отношениями N: N, следует внимательно рассмотреть:

  1. Более общее (включая) решение будет заключаться в реализации таблицы соединения, содержащей все сущности в виде полей, и всеих комбинации в виде значений (строк)
  2. Однако, если отношения этих сущностей на самом деле не для случая полного набора, а скорее (декартово) произведение (некоторых из) их двоичного N:N отношений, а затем тщательно продумайте минимальное количество необходимых таблиц из двух полей.
  3. Обобщая 2, всегда предпочитайте (если это правильно, конечно) иметь соединяемые таблицы с как можно меньшим количеством полей.И, конечно же, не создавайте таблицу соединения, если она не используется.
  4. Полезный совет, позволяющий различить вышесказанное, - когда вставка завершена, если ваше сердце (!) Скажет, что вы делаете избыточностьили недействительные вещи, тогда вы должны выбрать один из более поздних методов.

E1) Пример страницы Википедии на 4NF: https://en.wikipedia.org/wiki/Fourth_normal_form

У нас есть сущности Ресторан, Разнообразие пиццыи зона доставки.Мы могли бы реализовать их отношения «многие ко многим» с помощью одной таблицы соединений, включая все три.Однако, если кто-то думает о данных правильно, эти триплеты являются продуктом только двух отношений N: N: Ресторан: Пицца и Ресторан: Зона доставки.Если бы ресторан "A1 Pizza" решил включить в свой репертуар сорт "Thin Crust" Pizza, то мне пришлось бы либо вставить один ряд с одним и тем же разнообразием ресторанов / пицц во все районы доставки "A1 Pizza", в которых было бы 4.redunding, или только вставка для определенной области доставки, которая будет выглядеть 4.invalid, потому что ни один магазин не будет предлагать меньше разнообразия для области доставки (или, по крайней мере, скажем, так сказано в нашей спецификации).

E2) Пример страницы Википедии на 5NF: https://en.wikipedia.org/wiki/Fifth_normal_form

У нас есть юридические лица Продавец, Бренд и Тип.Мы могли бы реализовать их отношения «многие ко многим» с помощью одной таблицы соединений, включая все три.Однако из-за части «применяется следующее правило» триплеты на самом деле являются (декартовым) произведением доступных соотношений 3 N: N, и поэтому правильный метод состоит в том, чтобы иметь три таблицы соединений для него.«Обратите внимание, как эта настройка помогает устранить избыточность».часть очень похожа на мой 4-й пункт.

Этот случай становится еще более запутанным из-за того факта, что, хотя статья гласит «Также обратите внимание, что таблица в 4NF», правда в том, что если таблица имелавсе строки, которые должны быть выполнены, чтобы охватить «следующее правило», тогда оно не будет охватывать 4NF!Правильно?

Итак ... В чем разница между E1 и E2, которая делает один из них 4NF, а другой - примером 5NF?

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

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

5NF требует, чтобы каждая зависимость соединения (JD), удовлетворяемая таблицей, подразумеваласьсуперключи этого стола.4NF касается только концепции многозначной зависимости (MVD), но поскольку MVD всегда подразумевает существование соответствующего JD, нет необходимости вообще заниматься 4NF.Историческая причина существования 4NF заключается в том, что он был изобретен первым, а затем был эффективно заменен 5NF - так же, как 3NF был заменен EKNF / BCNF.

0 голосов
/ 29 мая 2018

Вот еще один вопрос с просьбой прояснить природу 5NF, и у него есть более практический пример: Как понять 5-ую Нормальную Форму? .Это может помочь поместить более абстрактные ответы, приведенные здесь, рядом с «практическим примером» из этого другого вопроса.

0 голосов
/ 24 мая 2018

В чем разница между E1 и E2, которая делает один из них 4NF, а другой - примером 5NF?

Оба отношения - не 4NF и не 5NF - демонстрируют аномалии обновления из-за JD;4NF означает отсутствие аномалий из двоичных JD, а 5NF означает отсутствие аномалий из JD любой арности.Нормализация примера из Википедии к 4NF избавила от двоичного JD - отношение было проблемным двухсторонним соединением.Нормализация до 5NF избавила от 3-сторонней JD - отношение было проблемным 3-сторонним соединением.(Так как это началось в 4NF, у него не могло быть проблемных двоичных JD.)


Отношение (значение или переменная) находится в 5NF, когда для каждого способа оно может быть разложено без потерь (то есть впроекции, которые присоединяются к нему) (т. е. соответствует JD (зависимость соединения)), компоненты могут быть присоединены обратно в некотором порядке, где общие столбцы каждого соединения являются суперключом оригинала.(Алгоритм членства Фейджина в статье PJ / NF.) Определение 4NF такое же, за исключением того, что имеет значение только то, как его можно без потерь разложить на две проекции (т.е. соответствующий JD является двоичным) (т.е. соответствующийMVD (многозначная зависимость) имеет место).

(Говорят, что такой допустимый JD, имеющий такую ​​последовательность соединений, "подразумевается CK (ключами-кандидатами)".)

Идея состоит в том, что если мы можем разложить на проекции, которые присоединяются к оригиналу, то мы должны это сделать, за исключением того, что объединение суперключей не вызывает никаких проблем / аномалий.

Когда FD (функциональная зависимость) S ->A сохраняется в отношении с набором атрибутов R, отношение разложено без потерь на SU {A} & R - {A}.Итак, JD {SU {A}, R - {A}} содержит & MVD S - >> {A} имеет место.

С В какой наивысшей нормальной форме находится эта таблица?

Значения отношений / Предикаты

С другой стороны, предположим, что вы знали значение отношения в той степени, в которой вы знали, что оно содержит кортежикоторые делают истинное утверждение из (характерного) предиката , выражаемого как соединение других, скажем,

    ticket Ticket was submitted by a person with first name Vname
AND there is a person with name Vname Nname
AND ticket Ticket was submitted by a person with last name Nname

Соединение разработано так, что предикат его выходных данных - это И предикатовего входов.Таким образом, вы знаете, чтобы проверить, удовлетворяют ли любые соответствующие разложения оригинала JD (т.е. являются ли отношения из конъюнктов проекциями оригинала), и таким образом проверить, подразумевается ли JD в CK оригинала.

Точка нормализации для более высоких NF состоит в том, что JD имеет место, когда предикат отношения может быть выражен как соединение других, и их отношения являются проекциями оригинала, поэтому мы можем использовать более простые отдельные отношения, за исключением того, что мы могли бы также присоединиться/ И отношения / предикаты для парных совместно используемых CK, потому что до сих пор нет аномалий обновления.(Если выполняется FD {x, ...} -> a, то выполняется определенное MVD и выполняется некоторый двоичный JD, и предикат отношения можно выразить как ... AND a = f(x, ...).)

...