[英]Mysql one middle table for multiple similar tables
我有一個名為category的表。 有一些與類別表有關的表。 例如,用戶具有類別,帖子具有類別等。每個用戶必須具有自己的中間表才能與類別表相關。 (例如:帖子有很多類別)
現在有兩種不同的方法 :
首先 :每個表(如用戶,帖子...)都有與category
表相關的中間表。
第二 :所有表都有一個中間表,中間有一個稱為type
的列(type可以具有以下值: user , post等)。 (這里沒有外鍵,因為外鍵是虛擬的)
哪一個更好? 任何想法?
當您擁有不同的實體集(例如User
和Post
)不是較高類型的子類型時,我建議采用第一種方法-制作單獨的關系表。 這樣做的原因是要嚴格遵循邏輯關系的基本概念,這要求每個組件/角色具有單個域。
從長遠來看,這將大大簡化查詢和一致性。 如果將不同的ID值集混合到同一列中,將阻止您使用唯一約束和外鍵約束來確保完整性,並且查詢將需要條件邏輯來處理不同的情況。
當您擁有較高類型的子集(例如Customer
和Employee
,它們都是Person
子集時,理想的做法是創建一個超類型表,然后在該超類型上創建關系。 在設計階段,這比在數據庫中填充數據后要容易得多。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.