2009-11-17 43 views
0

我有一個處理和存儲訂單的應用程序。每個訂單都由包含定價,尺寸,顏色等各種東西的訂單項組成。我的問題是,如何持續保存這些數據,而不必將其綁定到可能發生變化的基礎數據。我應該如何持續保持訂單數據,而不必將其與可能發生變化的基礎產品定價數據掛鉤?

例如,某人訂購一件由5件東西組成的東西,每件東西的價格爲1美元,總共爲5美元。但是,在未來的某個時候,個別事物的成本會變爲0.50美元。現在,當我提出舊訂單時,總成本是2.50美元,而不是5美元。

最初,我想只是不允許更新兒童表格,但這並不是真的可行,因爲定價基於巨大的定價網格,客戶只需要更新,而不是每次價格都創建新定價網格絲毫變化。每個定價網格都需要數小時才能建立,定價每隔幾天就會更改一次。

另一個想法是序列化整個訂單,並從中完成工作。但是,這使得更新系統和更改任何內容變得困難。舊訂單將不再正確顯示,甚至可能會導致系統崩潰。

這是一個非常普遍的問題,我正在尋找一個最佳實踐觀點。

回答

1

您需要保存每個訂單中的值,並且它們不應連接到價格網格,而是從其中複製。

0

丹妮是正確的。出於審計目的,您可以使用不隨時間變化的值創建記錄,而不是鏈接到可能隨時間變化的值。

因此,您的訂單項應具有購買內容和描述內容的副本。因此,如果您需要保留產品信息,請將其保存在包含價格,費用和總計的lineitem記錄中。

6

永遠不要根據產品的當前價格來確定您的訂單總額。在線目錄等的典型數據結構是具有訂單表和行項目表。訂單表包含訂單的所有相關信息(訂單總額,用戶ID,日期/時間等),而訂單項表包含產品ID,物品在放入購物車時的價格,以及稅務信息等和訂單號。

基本上是訂單表和訂單項之間的一對多關係。訂單項成爲產品價格等的訂單項。

+1

這是正確的。訂單發佈後,有關該訂單的所有內容都將保持不變:商品價格,稅務信息,優惠券信息,送貨地址等。您應該可以重新打印發票並獲得與之前打印的文檔完全相同的文檔。這不會在關係模型中產生冗餘,因爲「X的當前價格」與「訂單Y的訂單項Z價格」是不同的,即使這些值現在恰好相同。 – 2009-11-17 20:50:15

相關問題