2014-05-24 31 views
0

我正在爲零售商開發一個系統,並且在決定如何表示數據庫中的訂單時遇到了一些難題。我的訂單表的方案至今如下:在線和店內購物的獨立表格?

Id    - PK 
AccountId   - FK (Nullable) 
ShippingAddressId - FK (Nullable) 
BillingAddressId - FK (Nullable) 
ShippingMethod - (Nullable) 
Type    - (Nullable) 
Status 
Date 
SubTotal 
Tax 
Total 

我的問題是我不知道我是否應該表示網上購物和店內purcahses在單獨的表或沒有。如果我將它們存儲在同一張表中,則所有不可空的字段將是唯一適用於店內購買的字段。

掠過我腦海的另一個設計模式是這樣的:

在線訂購表:

PurchaseId  - PK, FK 
AccountId   - FK 
ShippingAddressId - FK 
BillingAddressId - FK 
ShippingMethod 
Type 

採購表:

Id  - PK 
Status 
Date 
SubTotal 
Tax 
Total 

而對於實體店購買,就根本沒有參考在線訂單表。

想法?

回答

0

我會做一個位置的第二個表,主鍵和位置信息。這也可以在線。然後在主表中使用foriegn鍵。然後,您只需填寫您正在執行的應用程序(存儲或聯機)所需的字段。這也可以讓企業只需將其添加到位置表中即可將其擴展到更多位置。

0

我正在與原始設計。可能更可維護,更高效。

0

您的第二個設計非常接近實體子分型模式。如果您的在線訂單表的主鍵是您的購買表的外鍵,那麼您應該有實體子類型輸入。

您的原始設計是用於物理實施數據庫的實用設計,因爲它的使用非常簡單。實體子分類將是邏輯級別的首選設計,因爲它清楚地表示了有關哪些謂詞(列)屬於哪些邏輯表的規則。

有些人也會在實體模型中使用實體子分型模式,因爲他們厭惡空值。

+0

對,只要使用PurchaseId作爲該路線的兩個表的PK,肯定會更有意義。我只是不確定你的邏輯/物理模型的含義。你能詳細說明一下嗎?有什麼區別? –