Normalisation - 2NF vs 3NF

В основном избегая функций обратного вызова при итерации по входному состоянию поддержания.

Видят здесь и здесь для обзора того, что может быть сделано с помощью генераторов.

28
задан philipxy 22 February 2019 в 06:52
поделиться

2 ответа

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

Примеры дизайна, который не в 2NF и не в 3NF, не одинаковы.

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

Однако, в примере не 2NF: зависимость

  • находится на части первичного ключа

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

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

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

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

8
ответ дан 28 November 2019 в 03:45
поделиться

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

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

Если вы «в поле». Забудьте об определениях. Ищите «лучшие практики». Один из них СУХОЙ: не повторяйте себя.

Если вы следуете этому принципу, вы уже освоите все, что вам нужно для НФ.

Вот пример. Ваша таблица имеет следующую схему:

PERSONS : id, name, age, car make, car model

Возраст и имя относятся к записи о человеке (=> id), но модель зависит от автомобиля, а не от человека.

Затем вы бы разбили его на две таблицы:

PERSONS : id, name, age, car_models_id (references CAR_MODELS.id)
CAR_MODELS : id, name, car_makes_id (references CAR_MAKES.id)
CAR_MAKES : id, name

Вы можете иметь репликацию в 2FN, но не в 3FN.

Нормализация - это отсутствие репликации, согласованности и, с другой точки зрения, внешних ключей и соединений.

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

2
ответ дан 28 November 2019 в 03:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: