Je conçois mon premier schéma de commerce électronique. Je lis sur le sujet depuis un petit moment et je suis un peu confus quant à la relation entre un order_line_item
et unproduct
Un product
peut être acheté. Il contient divers détails, mais le plus important est unit_price
.
An order_line_item
possède une clé étrangère pour l' product_id
achat, l' quantity
achat et unit_price
le moment où le client a acheté le produit.
La plupart de ce que j'ai lu dit que le unit_price
sur le order_line_item
devrait être explicitement ajouté (c'est-à-dire non référencé par le product_id
). Cela a du sens, car le magasin pourrait changer le prix à l'avenir, ce qui gâcherait les rapports de commande, le suivi, l'intégrité, etc.
La chose que je ne comprends pas, c'est pourquoi enregistrer directement la unit_price
valeur dans le order_line_item
?
Ne serait-il pas préférable de créer un tableau d'audit / historique qui documente le unit_price
changement d'un product
?
Lorsqu'un order_line_item
est créé, la clé étrangère de la product_audit
table est ajoutée et le prix peut être récupéré (par référence) à partir de là.
Il me semble qu'il y a beaucoup de points positifs à utiliser cette approche (moins de duplication des données, historique des changements de prix, etc.), alors pourquoi n'est-elle pas plus fréquemment utilisée? Je n'ai pas rencontré d'exemple de schéma de commerce électronique utilisant cette approche, ai-je raté quelque chose?
UDPATE: Il semble que ma question concerne la dimension à évolution lente . Je suis toujours confus, car la dimension à évolution lente concerne l'entrepôt de données et les OLAP. Les types de dimension à évolution lente peuvent-ils donc être appliqués à ma base de données de processus de transaction commerciale principale (OLTP)? Je me demande si je mélange beaucoup de concepts, j'apprécierais grandement quelques conseils.