我正在试图找出设计数据库以支持私有用户定义组的最佳方法。与Google Circles的完全相同。这些用于 JUST 用户,就像圈子一样 - 这就是创建像我在这里找到的用户组设计的原因:https://stackoverflow.com/a/9805712/2580503是不可取的。
到目前为止,我能提出的唯一解决方案是拥有这样的表:
USER_ID | GROUP_ID | ARRAY(USER_ID)
PKEY实际上是(USER_ID,GROUP_ID)的复合键。这样,用户可以拥有多个组。
非常感谢有关此提议解决方案的任何反馈,并希望听到是否有更好的方法来做到这一点。
谢谢!
编辑:为了澄清,GROUP_ID不会引用单独的表,它只会指示该用户的号码组。此外,该小组也会有一个名称等等 - 只是没有必要将其作为问题的一部分。
答案 0 :(得分:0)
怎么样?
Groups (GROUP_ID, USER_ID, GROUP_NAME)
Members (MEMBER_ID, GROUP_ID, USER_ID)
虽然Groups
可能会向后显示,但它实际上会列出拥有USER_ID
的{{1}},而GROUP_ID
会将Members
列为可能与之关联的行MEMBER_ID
与给定USER_ID
中的GROUP_ID
有关。
答案 1 :(得分:0)
怎么样
**Users**
id, name
**Groups**
id, name
**User_Groups**
id, user_id, group_id
**Group_users**
id, user_group_id, user_id
我已将groups
和user_groups
分开,假设您可能希望每个用户都有一些默认groups
,如果不是这样,您可以移动group_name
直接发送到user_groups
并忽略groups
表
答案 2 :(得分:0)
如果您需要标准化设计,则必须至少包含三(3)个表格。 USERS,USER_GROUPS和USER_GROUPS_MEMBERS。你是对的,USER_GROUPS的PK是一个二元组(USER,GROUP)。 USER_GROUPS_MEMBERS的PK将是三元组(USER,GROUP,USER)。