Выбор ответа Middle ER-модели и нормализация обновлено
Цена в строке заказа
Вопрос
В order_items хранится price, хотя цена есть и в products. Это ошибка нормализации?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Нет: это цена на момент заказа, она не должна меняться. Цена в строке заказа и цена в каталоге это разные факты: «за сколько продали» и «сколько стоит сейчас».
Варианты ответа
- Нет: денормализация всегда допустима, если ускоряет чтение
- Нет: это цена на момент заказа, она не должна менятьсяправильный ответ
- Да: нарушена 3НФ, цена зависит от product_id транзитивно
- Да: нарушена 2НФ, цену нужно брать только из products
Разбор
Цена в строке заказа и цена в каталоге это разные факты: «за сколько продали» и «сколько стоит сейчас». Если брать цену из products, после подорожания изменятся суммы старых заказов. Поэтому формально похоже на дублирование, но по смыслу это отдельный атрибут. «Денормализация всегда допустима» неверно: у неё есть цена согласованности.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.