2009-09-08 59 views
1

我正在爲電子商務Web應用程序的數據庫設計工作。對於這個問題,我簡化了設計,只顯示了與我的問題相關的部分。如何將「升級」實體添加到產品訂單數據庫設計中?

在這種情況下我感興趣的事物(實體)是Products,UpgradesOrders

ProductsOrders在這種類型的數據庫設計的典型方式有關係,與OrderItems的創建表的許多一對多的關係:

Products 
-------- 
ProductID (pk) 
Name 
Description 
Price 

Orders 
------ 
OrderID (pk) 
DateOrderPlaced 

OrderItems 
---------- 
OrderID (fk, cpk) 
ProductID (fk, cpk) 
Quantity 

現在我不知道怎麼加Upgrades到混合:

  • 一個Upgrade可以用於一個或多個Products
  • 一個是有效可以包括零個或多個有效Upgrades

例如,說我有這些記錄在OrderItems彌補訂單#1:

OrderID ProductID 
------- --------- 
1   1 
1   2 
1   3 

我想申請升級#1產品#1 #2 ...

我能想象添加Upgrades表和OrderItemUpgrades表,這可以讓我任意數量的Upgrades應用於給定OrderItem(線在Order)。

Upgrades 
-------- 
UpgradeID (pk) 
Name 
Description 
Price 

OrderItemUpgrades 
----------------- 
OrderID (fk, cpk) 
ProductID (fk, cpk) 
UpgradeID (fk, cpk) 

我認爲這是在Order造型的Upgrade的「應用」到Product

我的問題是,在給定的Product給定的Upgrade模型的「有效性」?我應該添加一個ValidProductUpgrades關聯升級和產品(或其他數據庫層解決方案)的表嗎?或者那個業務邏輯屬於應用層?

回答

1

我會盡力在上面的最終代碼塊中顯示。在這種情況下,添加一個單獨的表格可以實際將升級連接到特定訂單,同時記住產品。

由於升級可能對一個或多個產品有效,並且考慮到這一點,可能會有多個升級適用於單個產品;使用ValidProductUpgrades表也是有意義的,然後可以查詢該表以確保產品的升級僅在能夠應用於所述產品時才顯示。

我認爲你上面的假設是完整的,可能是處理這個問題的最好方法!

希望這會有所幫助!

+0

感謝韋德,這對第三方確認很有幫助,因爲我正在以正確的方式進行討論! – nselikoff 2009-09-09 19:00:26

相關問題