2011-10-20 114 views
0

我很努力使用數據庫設計來存儲客戶地址,並將它們與庫存系統中的訂單相關聯。目前,我有以下架構思路和3個選項:針對客戶和訂單的商店地址詳細信息

客戶
客戶ID
客戶名稱.....

CustomerAddress
AddressID
客戶ID
地址類型(結算,航運等)
AddressLine1
AddressLin E2 市

國家 郵編

訂單(選項1)
的OrderID
客戶ID
BillingAddressID
ShippingAddressID

訂單(選項2)
的OrderID
客戶ID
BillingAddressLine1
BillingAddressLine2
結算城市
BillingState
BillingCountry
BillingPostCode
ShippingAddressLine1
ShippingAddressLine2
ShippingCity
ShippingState
ShippingCountry
施ppingPostCode

訂單(選項3)
的OrderID
客戶ID
BillingAddressBlob
ShippingAddressBlob

我所需要的地址爲爲了保持靜態加班。所以如果我回顧兩年前的訂單,我可以看到正確的地址項目也被髮送並收費。

回答

1

更新答案,因爲上一個答案沒有幫助用戶。

你可以有一個表OrderAddress表保存地址

OrderAddress表有以下幾列

  • 的OrderId
  • AddressId

要鏈接客戶到地址,你可以有一個表CustomerAddress with following columns

  • 客戶編號
  • AddressId
  • PIN
  • 電話
  • 國家
  • Isactive

Isactive列將被用於區分哪些地址是當前活動。此外,從這個表中可以看到有多少存在了客戶

要查找發貨的時間,你可以檢查OrderAddress表

希望這soultions滿足您的需求

+0

喜確切的地址,由於不同的地址,我已經看到了那個網站和您鏈接的shemas。不幸的是,它們沒有幫助,因爲這些模式中的命令和地址之間沒有關聯。 – Kiwi

+0

感謝Siva,你能解釋爲什麼你要爲orderaddress創建一個單獨的表。由於每個訂單隻能有一個送貨地址和一個賬單地址,爲什麼不在訂單表中使用兩個地址ID?(選項1)? – Kiwi

+0

- 訂單到地址是1-1映射,客戶到地址可以是1到多個映射。可能有多於1個地址,但只有活動地址需要存在。訂單更新時,新地址條目將在訂單地址表中更新。而在CustomerAddress表中將添加新條目。另外,當您查詢記錄時,您可能會查找客戶的訂單數量。除非您需要更多詳細信息,否則您可能不需要與客戶相關聯的地址。這是基於查詢的使用(我的觀點) – Siva

相關問題