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_itemy unproduct
A productpuede ser comprado. Tiene varios detalles, pero lo más importante es unit_price.
Un order_line_itemtiene una clave externa para el producto product_idcomprado, quantitycomprado y unit_priceen el momento en que el cliente compró el producto.
La mayor parte de lo que he leído dice que el unit_priceen el order_line_itemdebe 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_pricevalor en order_line_item?
¿No sería mejor crear una tabla de auditoría / historial que documente el unit_pricecambio de a product?
Cuando order_line_itemse crea una, product_auditse 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.