В основном избегая функций обратного вызова при итерации по входному состоянию поддержания.
Видят здесь и здесь для обзора того, что может быть сделано с помощью генераторов.
Так как вы задаете очень конкретный вопрос об ответе на существующий вопрос, то здесь объясняется это (и в основном я скажу то, что дпортас уже сказал в своем ответе, но несколькими словами).
Примеры дизайна, который не в 2NF и не в 3NF, не одинаковы.
Да, зависимость в обоих случаях от одного поля.
Однако, в примере не 2NF: зависимость
, тогда как в примере не 3NF (который находится в 2NF):
В обоих случаях для нормализации вы создали бы дополнительную таблицу, в которой не было бы аномалий обновления (пример обновления) аномалия: в примере 2NF, что произойдет, если вы обновите Coursename
для IT101|2009-2
, но не для IT101|2009-1
? Вы получите противоречивые = бессмысленные = непригодные данные).
Итак, если вы запомните ключ, весь ключ и ничего, кроме ключа , который охватывает как 2NF, так и 3NF, это должно сработать для вас на практике при нормализации. Различие между 2NF и 3NF может показаться вам неуловимым (вопрос, если в дополнительной зависимости атрибут (ы), от которого зависят данные, являются частью ключа-кандидата или нет) - и, ну, конечно, - так что просто примите это.
Вы достигли 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.
Нормализация - это отсутствие репликации, согласованности и, с другой точки зрения, внешних ключей и соединений.
Чем больше нормализовано, тем лучше для данных, но не для производительности и не понимания, если они действительно становятся слишком сложными.