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_iteme aproduct
A productpuò essere acquistato. Ha vari dettagli, ma il più importante è unit_price.
An order_line_itemha una chiave esterna per l' product_idacquisto, l' quantityacquisto e unit_priceil momento in cui il cliente ha acquistato il prodotto.
La maggior parte di ciò che ho letto afferma che l' unit_priceon the order_line_itemdovrebbe 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_pricevalore in order_line_item?
Non sarebbe meglio creare una tabella di audit / cronologia che documenti la unit_pricemodifica di un product?
Quando order_line_itemviene creato un, product_auditviene 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.