Нормализация-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, когда нет отношений между ключом и другими столбцами, которые не зависят от него.
Не уверен, что мой профессор сказал бы так, но это то, что есть.
Если вы