2012-06-06 29 views
1

如何避免多個表格關係M:M?如何避免多個表格關係M:M?

看到下一個模型

enter image description here

正如每個選擇題我創建了一個情侶對錶,我一直運作良好,但現在我有很多情況下這是怎麼回事可見即將發生。有沒有一個解決方案,而不必創建該數量的表?

注意:顯然,我們必須牢記報告時

回答

1

如果您的優先級避免鏈接表的增殖承擔該解決方案並不複雜將來的查詢,選擇,排序和查詢混合了多個表,您可以使用繼承(又名類,子類,概括層次。):

enter image description here

無論Item多少子實體有,你總是隻需要一個鏈接表(PersonItem)。

不幸的是,今天的DBMS通常不直接支持繼承,因此您必須使用these 3 strategies(「每個表的具體類別」)中的「所有類在一個表中」或「每個表的類」擴散鏈接表)。這在某些情況下會增加複雜性,所以如果你的優先級是保持查詢簡單,那麼你可能會更好地堅持使用當前的設計(儘管這取決於你打算運行的查詢的種類 - 有些實際上可以通過繼承來簡化) 。

順便說一句,以上模型不會讓不同的HobbyThing共享Id。我猜這對你並不重要,但如果是這樣,這是沒有繼承的模型(,你需要在Item的PK中包含這個類型)。

+0

我一直在想![模型] [http://i.imgur.com/z8ehN.png]但查詢可能會很複雜 – rkmax