Ich entwerfe mein erstes E-Commerce-Schema. Ich habe ein wenig über das Thema gelesen und bin etwas verwirrt über die Beziehung zwischen a order_line_item
und aproduct
A product
kann gekauft werden. Es hat verschiedene Details, aber das Wichtigste ist unit_price
.
An order_line_item
hat einen Fremdschlüssel zu dem product_id
gekauften, dem quantity
gekauften und dem unit_price
zu dem Zeitpunkt, an dem der Kunde das Produkt gekauft hat.
Das meiste, was ich gelesen habe, besagt, dass das unit_price
On order_line_item
explizit hinzugefügt werden sollte (dh nicht durch das referenziert wird product_id
). Sinnvoll, da das Geschäft den Preis in Zukunft ändern könnte, was Bestellberichte, Nachverfolgung, Integrität usw. durcheinander bringen würde.
Was ich nicht verstehe, ist, warum ich den unit_price
Wert direkt in das speichere order_line_item
.
Wäre es nicht besser, eine Audit- / Verlaufstabelle zu erstellen, die die unit_price
Änderung von a dokumentiert product
?
Beim Erstellen von order_line_item
wird der Fremdschlüssel der product_audit
Tabelle hinzugefügt, und der Preis kann von dort (als Referenz) abgerufen werden.
Es scheint mir, dass die Verwendung dieses Ansatzes eine Menge Vorteile mit sich bringt (weniger Duplizierung von Daten, Verlauf von Preisänderungen usw.). Warum wird er also nicht häufiger verwendet? Ich habe noch kein Beispiel für ein E-Commerce-Schema gefunden, das diesen Ansatz verwendet. Fehlt mir etwas?
UDPATE: Meine Frage scheint sich auf die sich langsam ändernde Dimension zu beziehen . Ich bin jedoch immer noch verwirrt, da sich Slowly Changing Dimension auf Data Warehouse und OLAPs bezieht. Können langsam wechselnde Dimensionstypen auf meine OLTP-Datenbank (Main Business Transaction Process Database) angewendet werden? Ich frage mich, ob ich viele Konzepte vermische. Würde mich sehr über eine Anleitung freuen.