2014-10-16 69 views
0

我試圖在兩個表之間實現一個簡單的多對多關係。 用戶和組。Mysql多對多關係

User 
--------- 
user_id 
user_name 

Group 
---------- 
group_id 
group_name 

UserGroup 
---------- 
user_id 
group_id 

可以說用戶和組表都有1000個條目。

我必須創建一個屬於所有組的管理員用戶。 我應該在UserGroup表中爲「admin」用戶創建1000個條目嗎?

我可以在用戶表中創建一個布爾列,名爲「Applicable_to_all_groups」,在從UserGroup表中選擇之前應該首先檢查它們嗎?

任何建議這樣做的正確方法將不勝感激。

+1

創建一個名爲'ADMIN'的硬編碼組並將管理員用戶關聯到該組。 – radar 2014-10-16 14:53:54

+0

當我們希望所有用戶都屬於某個組時,我們使用「全部應用」設置,而不是加入每個用戶。這樣做的好處是新用戶屬於該組,而無需專門添加它們。 – jim31415 2014-10-16 14:55:19

+0

如果它必須是所有可以查看笛卡爾產品的組合 – 2014-10-16 14:57:16

回答

1

那麼,我會說這種情況下沒有「真正的」解決方案。

我們來看看它的一些優點/缺點

解決方案1 ​​,所有用戶組表

優點

請求得到允許的羣體更容易編寫(沒有或從句)

缺點

每次在組表中添加條目時,您都必須在此表中添加條目。 可以,當然,但無聊,容易出錯。

如果你想要一個新的用戶「也可以與所有組相關」,你必須重寫你所有的程序/觸發器/無論你使用哪個「最新」UserGroup表來添加這個新事物。

溶液2,標誌(=布爾列)

優點

避免在你的數據庫不必要的條目(當然,小的點)

始終 「向上最新」沒有任何額外的工作。

輕鬆添加新的用戶與「所有組」權限(只是把標誌設置爲true)

缺點

你必須請求允許組時添加或條款(基於在標誌或GroupUser 表)

的個人觀點

我會去的標誌soluti on ...