Mysql
一對多關係中“中間”表的優勢
實體:
- 列表
- 潛在客戶
我想要實現的是一個場景,其中應用了以下約束之間的關係
lists
:leads
一個列表可以有很多潛在客戶,但一個潛在客戶只能屬於一個列表。執行此操作的標準方法是簡單的非標識一對多關係。
我這樣做的另一種方法是創建混合的一對一和一對多關係。
在這兩種情況下,一個列表都可以包含許多潛在客戶,但一個潛在客戶只能存在於一個列表中。有沒有人看到第二種方法的優點或缺點?這兩種方法有什麼區別嗎?有什麼選擇嗎?
在極少數情況下,您可能會從您的第二個設計中受益:
一種是如果存在子類型場景,其中只有某個特定子類型具有關係(而超類型沒有),並且子類型除了外鍵之外還有其他附加欄位。
另一個可能是出於安全原因需要在與包含外鍵的實體的其餘部分不同的粒度級別上控制外鍵的存在和值。大多數 DBMS 可以處理每個表的安全性。大多數不處理每列的安全性。