Database-Design

訂單和報價表 - 數據庫設計

  • June 5, 2018

下面是我目前用於電子商務網站訂單部分的數據庫模式的 ERD。該網站基於 oscommerce,但已經過修改,我還從表格中刪除了相當多的欄位以簡化圖表。

目前erd

我計劃在網站管理中添加創建報價的功能。報價與訂單非常相似,大多數報價將轉換為訂單。每個都需要一些不同的數據,儘管大多數欄位都會出現在兩者中,例如客戶詳細資訊。原始報價也應保留,以便將來可以再次使用,即修改從報價創建的訂單不會修改原始報價。

考慮相似之處;感覺沒有必要為報價複製整個訂單結構,特別是因為訂單的子表採用儲存報價數據所需的格式。

我想我可能會採用的方法是創建一個報價表,它類似於訂單,然後重用大多數訂單子表來處理報價。

(可能我仍然會將orders_status 和orders_status_history 複製到quotes_status 和quotes_status_history,因為報價會有不同的狀態,並且報價和訂單應該只有相關的狀態。)

我希望重新用於報價的表格:

  • 訂單總數
  • admin_watch_list
  • 訂單產品
  • 訂單產品屬性
  • 訂單產品下載

為了重新使用這些表,在我看來,我必須執行以下操作之一:

  • 為上面列出的每個表添加一個quotes_id 欄位。儘管這些表中的每一個都會有一個“quotes_id”和“orders_id”,其中一個應該總是有一個值,另一個應該總是為NULL。
  • 在報價表中添加一個orders_id 欄位,在我的報價表中啟動orders_id 的自動增量為1000000000,這樣它就不會干擾我的orders 表中從0 開始的自動增量orders_id。引號中的 orders_id 然後可以使用它的 orders_id 引用所有其他表,儘管該 orders_id 永遠不會出現在 orders 表中

這兩種解決方案似乎都不理想,我想知道是否有更好的方法來完成我想做的事情。

理想情況下,我希望盡可能多地重複使用,因為這可能意味著更快的開發和更少的未來維護。

我的管理中已經有一個用於編輯訂單的頁面,我覺得我越接近訂單結構,我認為將我的程式碼從編輯訂單頁面重用於我需要的創建/編輯報價頁面就越容易添加。

感謝所有幫助或建議。

把它們結合起來怎麼樣?保持訂單表的概念為基礎,並添加一個帶有值的狀態欄位:

  1. Entered - 正在輸入的數據,剛剛開始
  2. 報價 - 提供給客戶的報價
  3. 已訂購 - 客戶已接受報價並將報價轉換為訂單

您提到保留原始數據,如果您有 ORDERS_HISTORY 或 ORDERS_VERSION 表,這是可行的。基本上,每當訂單狀態發生變化時,更新主表,但保留它在歷史表中過去的樣子的快照。這將使您可以提取舊版本的報價/訂單以進行報價。

引用自:https://dba.stackexchange.com/questions/173313