Ich muss einige Änderungen an einem E-Commerce-System vornehmen, um einige zusätzliche Informationen hinzuzufügen, und wollte die Gelegenheit nutzen, möglicherweise einige Verbesserungen vorzunehmen und es flexibler zu gestalten. Wenn ein Kunde eine Bestellung aufgibt, müssen wir mehrere Informationen mit jedem bestellten Artikel speichern. zum Beispiel der Produktpreis, der Versandpreis, die erhobene Steuer, alle vorgenommenen Anpassungen.Was ist ein vorgeschlagenes Datenbankschema für Bestell-/Rechnungsinformationen?
ich diskutieren werde, wenn diese Felder diskret gespeichert werden sollen, wie zum Beispiel (vereinfachtes Beispiel):
ORDER_LINE_ITEM
OrderLineItemID
ProductID
Qty
Price
Shipping
Handling
SalesTax
Adjustment
Zum Beispiel könnte ich dann den Gesamtpreis berechnen die Kunden bezahlt:
SELECT Qty*(Price+Shipping+Handling+SalesTax) As TotalCollected FROM ORDER_LINE_ITEM
oder wenn ich soll eine indirekte Struktur verwenden:
ORDER_LINE_ITEM
OrderLineItemID
ProductID
Qty
ORDER_LINE_ITEM_ENTRIES
OrderLineItemEntryID
OrderLineItemID
EntryType
Value
Zum Beispiel:
1 | 1 | Price | $10
2 | 1 | Shipping | $5
3 | 1 | Handling | $1
4 | 1 | SalesTax | $1
5 | 1 | Adjustment | -$3.50
Der Vorteil dabei ist, dass ich später weitere Informationen speichern kann, ohne das Tabellenschema zu ändern. Das Abrufen der Informationen und das Ausführen von Berichten wird jedoch komplizierter und langsamer.
Gibt es eine bewährte Methode zum Speichern dieser Informationen in Bestell-/Rechnungsdatenbanken?
Vielen Dank im Voraus,
Dan
Was haben Sie am Ende ausgewählt? –
Ich landete die mehr denormalisierte Struktur, wo ich Preis, Versand, Handhabung, etc als Teil jeder Werbebuchung und TotalPrice, TotalShipping, TotalHandling usw. als Teil der Bestellung habe. Die Bestellsummen werden von der Business-Schicht immer dann neu berechnet, wenn ein Wert geändert wird (was selten vorkommt). Dies macht es sehr schnell und einfach, Berichte abzufragen (was häufig vorkommt), ohne dass die Verbraucher der Daten die Struktur kennen müssen. –