Нормализация-2NF против 3NF

изо всех сил, чтобы увидеть различия между ними. Я знаю, что мы говорим, что 2NF - это " весь ключ "и 3NF"ничего, кроме ключа".

ссылаясь на этот отличный ответ Smashery:каковы 1НФ, 2NF и 3НФ в проектировании баз данных?

пример, используемый для 3NF, точно такой же, как 2NF - его поле, которое зависит только от одного ключевого атрибута. Как пример для 3НФ отличаться от 2NF?

спасибо

4 ответов


предположим, что какое-то отношение удовлетворяет нетривиальной функциональной зависимости вида A->B, где B-непримиримый атрибут.

2NF нарушается, если A не является суперключом, но является правильным подмножеством ключа-кандидата

3nf нарушается, если A не является суперключом

вы заметили, что требование 3NF-это просто особый случай (но не совсем особый) требования 2NF. 2NF сам по себе не очень важен. Важным вопросом является ли это superkey, а не является ли просто какой-то частью ключа-кандидата.


Так как вы задаете очень конкретный вопрос об ответе для существующие так вопрос вот объяснение этого (и в основном я скажу, что dportas уже сказал в своем ответе, но в более словах).

примеры дизайна, который не находится в 2NF и не в 3NF не то же самое.

Да, зависимость в обоих случаях находится в одном поле.

однако, в Примере non 2NF:

  • зависимость на часть первичный ключ

в то время как в Примере non 3NF (который находится в 2NF):

  • зависимость находится в поле, которое не является частью первичного ключа (и также обратите внимание, что в этом примере это соответствует 2NF; это должно показать, что даже если вы проверяете 2NF, вы также должны проверить 3NF)

в обоих случаях для нормализации вы создадите дополнительную таблицу, которая не будет показывать аномалии обновления (пример аномалии обновления: в Примере 2NF, что произойдет, если вы обновите Coursename на IT101|2009-2, но не IT101|2009-1? Вы получаете несогласованные=бессмысленные=непригодные данные).

Итак, если вы запоминаете ключ, целый ключ и ничего кроме ключа, который охватывает как 2NF, так и 3NF, что должно работать для вас на практике при нормализации. Различие между 2NF и 3NF может показаться вам тонким (вопрос, если в дополнительной зависимости атрибут (ы), от которого зависят данные являются частью ключа кандидата или нет) - и, ну, это-так что просто примите его.


2NF позволяет не-простым атрибутам функционально зависеть от не-простых атрибутов

но

3NF позволяет не-простым атрибутам функционально зависеть только от super key

таким образом, когда таблица находится в 3NF, она находится в 2NF, а 3NF строже, чем 2NF

надеюсь, что это помогает...


вы достигли 3-го NF, когда нет отношений между ключом и другими столбцами, которые не зависят от него.

Не уверен, что мой профессор сказал бы так, но это то, что есть.

Если вы