2011-09-03 43 views
2

我的數據庫包含一個Customer和一個子類別表。
客戶可以屬於一個或多個子類別(當然,任何子類別都有一個或多個客戶)。
不知其爲這些表共享許多一對多關係鏈接的最佳解決方案:客戶ID(PK,FK)和SubcategoryID:另一個多對多的關係問題

  • A「標準」結CustomerSubcategory只包括兩個字段表(PK,FK)或
  • CustomerSubcategoryDe​​tail表還包含CustomerSubcategoryDe​​tailID(PK)以及SubcategoryID(PK,FK)和CustomerID(FK)字段。

有什麼建議嗎?

乾杯,Corbex

回答

2

我不認爲在結臺額外的增加了PK的任意值。如果沒有能夠通過Customer和/或SubCategoryID識別它們,您是否需要查看該表中的值? CustomerSubCategoryDe​​tailID值是否會在其他地方使用?

當我在我的博客上發生一個有趣的討論時,我complained about folks knee-jerking an IDENTITY column onto every single table。有些人爲OrderDetails表上的OrderDetailID列提供了一些很好的參數。這些情況是否適用於您?

1

我沒有看到需要第三列的customersubcategoryid;因此,我會選擇第一個選項。額外的列在你的任何連接中都不會給你帶來任何好處。你甚至不會使用它。

1

與您的第一選擇一起去。確保你創建了一個包含兩列的密鑰並強制唯一性。這樣你永遠不需要一個單獨的主鍵來區分其他相同的行。

在唯一密鑰中同時存在兩個列還有一個額外的好處。需要通過第一列執行查找的查詢可以使用索引,但他們永遠不需要讀取數據行,因爲索引已經包含第二列。