Estoy diseñando mi primer esquema de comercio electrónico. He estado leyendo sobre el tema por un tiempo, y estoy un poco confundido acerca de la relación entre un order_line_item
y unproduct
A product
puede ser comprado. Tiene varios detalles, pero lo más importante es unit_price
.
Un order_line_item
tiene una clave externa para el producto product_id
comprado, quantity
comprado y unit_price
en el momento en que el cliente compró el producto.
La mayor parte de lo que he leído dice que el unit_price
en el order_line_item
debe añadirse de forma explícita (es decir, no a través de la referencia product_id
). Tiene sentido, ya que la tienda podría cambiar el precio en el futuro, lo que estropearía los informes de pedidos, el seguimiento, la integridad, etc.
Lo que no entiendo, es ¿por qué guardar directamente el unit_price
valor en order_line_item
?
¿No sería mejor crear una tabla de auditoría / historial que documente el unit_price
cambio de a product
?
Cuando order_line_item
se crea una, product_audit
se agrega la clave externa de la tabla y el precio se puede recuperar (por referencia) desde allí.
Me parece que hay muchos aspectos positivos al usar este enfoque (menos duplicación de datos, historial de cambios de precios, etc.), entonces, ¿por qué no se usa con más frecuencia? No he encontrado un ejemplo de un esquema de comercio electrónico que utilice este enfoque, ¿me estoy perdiendo algo?
UDPATE: Parece que mi pregunta se relaciona con Dimensión que cambia lentamente . Sin embargo, todavía estoy confundido ya que la Dimensión de cambio lento se relaciona con el almacén de datos y OLAP. Entonces, ¿se pueden aplicar los tipos Slowy Changing Dimension a mi base de datos de proceso de transacciones comerciales (OLTP) principal? Me pregunto si estoy mezclando muchos conceptos, agradecería mucho alguna orientación.