Я создаю свою первую схему электронной коммерции. Я читал вокруг предмета на некоторое время, и я немного запутался об отношениях между order_line_item
иproduct
А product
можно было купить. В нем есть разные детали, но самое главное unit_price
.
У order_line_item
него есть внешний ключ к product_id
купленному, quantity
приобретенному и тому unit_price
моменту, когда покупатель приобрел продукт.
Большая часть того, что я прочитал, говорит о том, что объект unit_price
on order_line_item
должен быть явно добавлен (т.е. не указан через product_id
). Имеет смысл, так как магазин может изменить цену в будущем, что испортит отчеты о заказах, отслеживание, целостность и т. Д.
Вещь, которую я не понимаю, - зачем напрямую сохранять unit_price
значение в order_line_item
?
Не лучше ли создать таблицу аудита / истории, которая документирует unit_price
изменение product
?
Когда order_line_item
создается, product_audit
добавляется внешний ключ таблицы, и цена может быть получена (по ссылке) оттуда.
Мне кажется, есть много положительных сторон в использовании этого подхода (меньшее дублирование данных, история изменения цен и т. Д.), Так почему же он не используется чаще? Я не встречал пример схемы электронной коммерции, которая использует этот подход, я что-то упустил?
UDPATE: Похоже, мой вопрос касается медленно меняющегося измерения . Я все еще в замешательстве, поскольку медленно изменяющееся измерение относится к хранилищу данных и OLAP. Так можно ли применять типы медленного изменения размеров к моей основной базе данных процессов бизнес-транзакций (OLTP)? Мне интересно, если я смешиваю много понятий, был бы очень признателен за некоторые рекомендации.