2011-08-28 66 views
10

考慮以下幾點:數據建模:是否總是需要使用交叉表?

我有定義了兩個表(Customers和例)如下:

**Customers** 
CustomerId (PK) 
CustomerName 
CustomerPhone 

**Cases** 
CaseId (PK) 
CaseManager 
CaseNotes 

每個客戶可以有箱子無限量,但每種情況下,可以只屬於一個顧客。因此,爲了將表彼此關聯,我將使用一個交叉表(CustomerCases),它分別由每個表中的外鍵組成。

但是,我不能僅將Customers表中的CustomerID作爲外鍵添加到Cases表中嗎?我覺得我失去了一些東西。如果我選擇不使用十字路口表,我是否應該知道有哪些缺陷?

回答

6

如果一個案例只能屬於一個客戶,那麼我只是將一個CustomerID FK添加到Cases表中似乎完全合理。
如果您認爲該要求最終可能會發生變化(例如,案件可能有多個客戶),那麼交集表方式可能會更有意義。
另外,除非您擁有無限數量的CaseManagers,否則擁有Managers表並從Cases表中有一個FK也可能是有意義的。

+0

非常感謝!我是新來的,我不能告訴你這意味着多快得到一個徹底的答案! – TelJanini

5

「交點」(又名「交叉點」或「交叉引用」)表格僅用於模擬多對多關係。在這種情況下,案例參與與客戶的多對一關係。所以,一個外鍵是必需的 - 事實上,這將是一個更傳統的解決方案。避免結點表的不必要的複雜性 - 除非存在相反的體系結構原因(例如,應用程序依賴於要求所有關係使用結點表示的組件)。

+0

非常感謝!你爲我節省了很多頭痛!再次感謝! – TelJanini

+0

+1用於術語和解釋什麼類型的關係需要這個模型 – Wiseguy

相關問題