Sto progettando il mio primo schema di eCommerce. Sto leggendo l'argomento da un po 'di tempo, e sono un po' confuso riguardo al rapporto tra an order_line_item
e aproduct
A product
può essere acquistato. Ha vari dettagli, ma il più importante è unit_price
.
An order_line_item
ha una chiave esterna per l' product_id
acquisto, l' quantity
acquisto e unit_price
il momento in cui il cliente ha acquistato il prodotto.
La maggior parte di ciò che ho letto afferma che l' unit_price
on the order_line_item
dovrebbe essere esplicitamente aggiunto (cioè non referenziato attraverso il product_id
). Ha senso, poiché il negozio potrebbe cambiare il prezzo in futuro, il che rovinerebbe i rapporti sugli ordini, il monitoraggio, l'integrità ecc.
La cosa che non capisco, è perché salvare direttamente il unit_price
valore in order_line_item
?
Non sarebbe meglio creare una tabella di audit / cronologia che documenti la unit_price
modifica di un product
?
Quando order_line_item
viene creato un, product_audit
viene aggiunta la chiave esterna della tabella e il prezzo può essere recuperato (per riferimento) da lì.
Mi sembra che ci siano molti aspetti positivi nell'utilizzare questo approccio (meno duplicazione dei dati, cronologia delle variazioni di prezzo, ecc.), Quindi perché non viene usato più frequentemente? Non ho trovato un esempio di uno schema di eCommerce che utilizza questo approccio, mi sto perdendo qualcosa?
UDPATE: Sembra che la mia domanda si riferisca alla dimensione che cambia lentamente . Sono ancora confuso, poiché la dimensione a modifica lenta si riferisce al data warehouse e agli OLAP. Quindi i tipi di dimensione a modifica lenta possono essere applicati al mio database di processo delle transazioni commerciali (OLTP)? Mi chiedo se sto mescolando molti concetti, apprezzerei molto un po 'di guida.