2010-05-07 27 views
1

好吧所以,我有一個用戶表,並希望一起定義用戶組。最好的解決辦法我有,這是創建三個數據庫表如下:如何設計此鏈接表?

用戶表

user_id 
user_name 

UserGroupLink

group_id 
member_id 

的GroupInfo

group_id 
group_name 

這種方法保持成員,團體信息分開。這只是我的想法。有一個更好的方法嗎?另外,鏈接兩個其他表的良好命名約定是什麼?

+0

這裏有缺少的信息。用戶可以屬於多個組嗎?屬於一個組是可選的還是強制性的?您提出的解決方案是可以的,但如果用戶只能有一個組,則可以進一步削減。另外,調用它的成員id與被調用的實體不一致。 – 2010-05-07 18:50:00

回答

2

外貌,好,我會去的:

Group 
----- 
GroupID (PK) 
Name 
CreatedDate 

GroupUser 
--------- 
GroupUserID (PK) 
GroupID (FK) 
UserID (FK) 
CreatedDate 

User 
---- 
UserID (PK) 
Firstname 
Lastname 
CreatedDate 
... 
+0

PK =主鍵 FK =? – sooprise 2010-05-07 18:48:54

+3

@Soo,FK =外鍵,來自另一個表的鍵。 – tloflin 2010-05-07 18:49:29

+0

謝謝,很高興知道這個術語。 – sooprise 2010-05-07 18:52:19

2

看起來像一個相當標準的基於角色的用戶模型給我。這可以。

3

這要看情況。

如果一個成員只能屬於一個組,那麼你的解決方案是矯枉過正(並沒有正確優化)。在這種情況下,擺脫UserGroupLink表就足夠了,只需將group_id列添加到UserTable即可。

+1

每個用戶可以是多個組的成員。我應該在OP中指定(我的錯誤) – sooprise 2010-05-07 18:49:23

+0

好的。那麼忽略我;) – Franz 2010-05-07 19:36:33

0

重要的是要選擇一個慣例並堅持下去。

以下是我會說出這些表(該結構是好的,順便說一句):

Users 
----- 
id 
name 

UserGroups 
---------- 
user_id 
group_id 

Groups 
------ 
id 
name 
0

你的表格佈局是合適的,恕我直言。連接表有各種不同的命名約定--Ruby on Rails使用以下劃線連接的表名,按照字母順序排列:「group_member」。

0

除了答案,創建表格的決定並不依賴於一個觀點。有我們所說的數據庫規範化;數據庫設計中遵循的規則。