2009-07-27 41 views
0

假設我們正在做的,一個系統,我們必須存儲addrees建築物, 人,汽車等什麼是存儲不同實體的「地址」的最佳模式?

地址「格式」應該是這樣的:

 
State (From a State list) 
County (From a County List) 
Street (free text, like '5th Avenue') 
Number (free text, like 'Chrysler Building, Floor 10, Office No. 10') 

(是的,我不生活在美國)

什麼將是存儲信息的最佳方式:

  • 我應該有一個Person_AddressCar_Address,...
  • 或者地址信息應該在每個實體的列中,
  • 我們可以只有一個地址表並嘗試將每一行鏈接到不同的實體嗎?

或者還有另一種更好的方式來處理這種情況?
你會怎麼做?

回答

0

我會說有一個地址類型字段是從下拉列表中查找

1

我曾經見過的地址存儲在地址表中,然後有很多的方案對多鏈接存儲人們地址鏈接的表格 - 每個表格都有一個單獨的表格,以便可以強制執行外鍵。有時,鏈接表存儲有關關係的信息,例如主要,交運地址等。

我也看到了地址存儲在客戶行中的地方。這樣可以有效地爲帳單,發貨地址等地址排列地址,這很好。處理了兩者之後,我認爲我更喜歡讓它們在自己的實體中,它允許您很容易地保留舊的非活動地址的歷史記錄。

我們對電話號碼使用了相同的技術,人們需要存儲不同數量的電話號碼。

1

我強烈建議閱讀David C. Hay的「Data Model Patterns - Conventions of Convention」。作者深入討論了這個問題。
您在設計中擁有兩個廣泛的實體。駐留/所屬的地址

一般地理位置

  • 一個人/對象的

    1. 地址,這不是一個很好的做法,地址與任何人或對象合併「在同一個表中的細節,如下面

      Person(personID, name, gender, addressline1, addressline2) 
      

      你可以有以下實體在您的設計

      Address(number, street, countyID,stateID) 
      Party(PartyID, Type) 
      Person(PersonID, name, dob, gender,...,primaryPartyID) 
      Car(carID, make, model, ...,primaryPartyID) 
      

      黨是人/車到地址之間的鏈接。 personPart和Car表中的primaryPartyID是派對錶的外鍵。這樣,您可以在汽車和人之間共享和尋址。如果您想爲每個人存儲多個地址,您可以在人與派對之間添加一個單獨的m:n表。派對的類型屬性可以採取以下值:'人','車輛'等...

  • 相關問題