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