2017-02-19 39 views
0

我有一個表,稱爲類別。有一些表與類別表相關。例如,用戶有類別,帖子有類別等。每個人都必須有自己的中間表來與類別表相關聯。 (例如:一個職位有很多類別)用於多個類似表的Mysql一箇中間表

現在有兩種不同的方法

首先:每個表(如用戶,後...)有自己的相關category中間表表。

:有一箇中間表的所有的表,通過被稱爲type柱分離(類型可具有這些值:用戶等)。 (這裏沒有外鍵,因爲外鍵是虛的)

哪一個更好?任何想法?

回答

1

當你有沒有更高類型的亞型不同實體集(像UserPost),我建議第一種方法 - 讓不同的關係表。其原因是要嚴格遵守邏輯關係的基本概念,即要求每個組件/角色具有單個域。

這將顯着簡化查詢和長期的一致性。如果將不同的ID值組合在同一列中,它將阻止您使用唯一約束和外鍵約束來確保完整性,並且您的查詢將需要條件邏輯來處理不同情況。

當你有一個更高類型的子集 - 就像CustomerEmployee,這是Person兩個子集,理想是建立一個超表,然後創建父類型的關係。在設計階段,這比在數據庫填充數據之後要容易得多。

相關問題