Estou projetando meu primeiro esquema de comércio eletrônico. Eu tenho lido sobre o assunto há um tempo e estou um pouco confuso sobre a relação entre um order_line_item
e umproduct
A product
pode ser comprada. Tem vários detalhes, mas o mais importante é unit_price
.
Um order_line_item
possui uma chave estrangeira para o product_id
adquirido, o quantity
adquirido e unit_price
no momento em que o cliente comprou o produto.
A maior parte do que li diz que o unit_price
on order_line_item
deve ser explicitamente adicionado (ou seja, não referenciado pelo product_id
). Faz sentido, pois a loja poderá alterar o preço no futuro, o que atrapalharia os relatórios de pedidos, rastreamento, integridade etc.
O que eu não entendo é por que salvar diretamente o unit_price
valor no arquivo order_line_item
?
Não seria melhor criar uma tabela de auditoria / histórico que documenta a unit_price
alteração de uma product
?
Quando um order_line_item
é criado, a chave estrangeira da product_audit
tabela é adicionada e o preço pode ser recuperado (por referência) a partir daí.
Parece-me que há muitos aspectos positivos em usar essa abordagem (menos duplicação de dados, histórico de alterações de preços, etc.), então por que não é usada com mais frequência? Não encontrei um exemplo de esquema de comércio eletrônico que use essa abordagem. Estou perdendo alguma coisa?
UDPATE: Parece que minha pergunta está relacionada à dimensão que muda lentamente . Ainda estou confuso, pois a Slowly Changing Dimension está relacionada ao data warehouse e aos OLAPs. Portanto, os tipos de dimensão de alteração lenta podem ser aplicados ao meu principal banco de dados de processos de transações comerciais (OLTP)? Gostaria de saber se estou misturando muitos conceitos, gostaria muito de receber algumas orientações.