我在我的數據庫中的以下表中有不少一對多的關係,這是由具有外鍵到每個主表的主鍵連接表表示:多對多表中的一個或兩個主鍵?
- 小工具:爲widgetid(PK),標題,價格
- 用戶:用戶ID(PK),名字,姓氏
假定每個用戶的Widget組合是唯一的。我可以看到如何構造所述連接表,定義了數據關係的兩個選項:
- UserWidgets1:UserWidgetID(PK),爲widgetid(FK),用戶ID(FK)
- UserWidgets2:爲widgetid(PK,FK ),UserID(PK,FK)
選項1具有主鍵的單個列。但是,這似乎沒有必要,因爲表中存儲的唯一數據是兩個主表之間的關係,並且這種關係本身可以形成唯一的關鍵字。因此導致選項2,其具有兩列主鍵,但丟失了選項1具有的一列唯一標識符。我也可以有選擇地在第一個表中添加一個兩列唯一索引(WidgetID,UserID)。
兩個性能明智之間還是有任何真正的區別,或者是爲了構建UserWidgets多對多表而選擇一種方法而不是其他理由?
您需要的索引取決於您的查詢需求,而不是您的模式設計。 – dkretz 2011-11-02 07:32:14