2013-07-21 12 views
-1

我想弄清楚設計數據庫以支持私人用戶定義組的最佳方法。與Google圈子的方式幾乎完全相同。這些應該是JUST用戶,很像圓圈 - 這就是爲什麼創建像我這裏發現的用戶組設計:https://stackoverflow.com/a/9805712/2580503將是不受歡迎的。用戶定義組的數據庫設計

到目前爲止,唯一的解決辦法我能想出是有這樣的一個表:

USER_ID | GROUP_ID | ARRAY(USER_ID)

凡PKEY實際上是(USER_ID,GROUP_ID)的複合鍵。這樣用戶可以有多個組。

非常感謝這個建議的解決方案的任何反饋,並希望聽到是否有更好的方法來做到這一點。

謝謝!

編輯:只是爲了澄清,GROUP_ID不會引用一個單獨的表,它只會指出該用戶的號碼組。同樣也會有一個團體的名字等 - 只是沒有必要列入問題的一部分。

回答

0

如果您需要標準化設計,這必須包含至少三(3)個表。 USERS,USER_GROUPS和USER_GROUPS_MEMBERS。你是正確的,USER_GROUPS的PK是一個二元組(USER,GROUP)。 USER_GROUPS_MEMBERS的PK將是一個三元組(USER,GROUP,USER)。

+0

這很有道理。謝謝! –

0

那麼呢?

Groups (GROUP_ID, USER_ID, GROUP_NAME) 
Members (MEMBER_ID, GROUP_ID, USER_ID) 

雖然Groups可能會出現倒退,它實際上列出了擁有GROUP_IDMembers給予它可以關聯,而與此USER_ID在給定GROUP_ID做行MEMBER_IDUSER_ID

0

如何

**Users** 
id, name 

**Groups** 
id, name 

**User_Groups** 
id, user_id, group_id 

**Group_users** 
id, user_group_id, user_id 

我已經分居groupsuser_groups假設有可能是因爲你希望爲每一位用戶提供了一些默認groups,如果不是這種情況的可能性,你可以移動group_name直接輸入user_groups並忽略groups