簡體   English   中英

MySQL一個中間表多個相似的表

[英]Mysql one middle table for multiple similar tables

我有一個名為category的表。 有一些與類別表有關的表。 例如,用戶具有類別,帖子具有類別等。每個用戶必須具有自己的中間表才能與類別表相關。 (例如:帖子有很多類別)

現在有兩種不同的方法

首先 :每個表(如用戶,帖子...)都有與category表相關的中間表。

第二 :所有表都有一個中間表,中間有一個稱為type的列(type可以具有以下值: userpost等)。 (這里沒有外鍵,因為外鍵是虛擬的)

哪一個更好? 任何想法?

當您擁有不同的實體集(例如UserPost )不是較高類型的子類型時,我建議采用第一種方法-制作單獨的關系表。 這樣做的原因是要嚴格遵循邏輯關系的基本概念,這要求每個組件/角色具有單個域。

從長遠來看,這將大大簡化查詢和一致性。 如果將不同的ID值集混合到同一列中,將阻止您使用唯一約束和外鍵約束來確保完整性,並且查詢將需要條件邏輯來處理不同的情況。

當您擁有較高類型的子集(例如CustomerEmployee ,它們都是Person子集時,理想的做法是創建一個超類型表,然后在該超類型上創建關系。 在設計階段,這比在數據庫中填充數據后要容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM