0

我试图找出设计数据库以支持私有用户定义组的最佳方法。几乎与 Google Circles 相同。这些只是为了用户,就像圆圈一样 - 这就是为什么创建像我在这里找到的用户组设计:https ://stackoverflow.com/a/9805712/2580503是不可取的。

到目前为止,我能想出的唯一解决方案是有一个这样的表:

USER_ID | GROUP_ID | 数组(USER_ID)

PKEY 实际上是 (USER_ID, GROUP_ID) 的复合键。这样一个用户可以有多个组。

非常感谢对此提议的解决方案的任何反馈,并希望听到是否有更好的方法来做到这一点。

谢谢!

编辑:为了澄清,GROUP_ID 不会引用单独的表,它只会指示该用户的数字组。该组还将有一个名称等 - 只是没有必要将其作为问题的一部分。

4

3 回答 3

0

关于什么?

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

尽管Groups可能会向后显示,但它实际上列出了USER_ID拥有一段GROUP_ID时间MembersMEMBER_ID可能与USER_ID给定中与 this 相关的行GROUP_ID

于 2013-07-21T04:34:29.043 回答
0

如果您想要标准化设计,这必须涉及至少三 (3) 个表。USERS、USER_GROUPS 和 USER_GROUPS_MEMBERS。您是正确的,USER_GROUPS 的 PK 将是一个二元组(USER,GROUP)。USER_GROUPS_MEMBERS 的 PK 将是一个三元组(USER、GROUP、USER)。

于 2013-07-21T14:29:04.270 回答
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

于 2013-07-21T05:19:27.733 回答