繁体   English   中英

在MySQL表中存储组成员的最佳方法

[英]best way to store member of group in mysql table

我正在开发一个Android应用程序,人们将在其中注册并加入小组。 我有一个单独的MySQL表,该表存储用户的详细信息,另一个表存储组的详细信息。 但是我在将用户与组联系起来时遇到问题。

users表将具有其user_idnamepasswordemail_idaddressgroup_id表将具有group_idgroup_name以及有关该组的其他详细信息。

我一定能得到

  1. 群组中的所有用户
  2. 用户加入的所有组

快速轻松地。

注意:假设您有10万个用户和1000个以上的组。

惯用的方式是拥有一个附加的n:m映射表,该表仅包含ID对-用户和他或她所属的组:

CREATE TABLE group_membership (
    user_id INT NOT NULL,
    group_id INT NOT NULL,
    PRIMARY KEY (user_id, group_id),
    CONSTRAINT FOREIGN KEY (user_id) REFERENCES users (id),
    CONSTRAINT FOREIGN KEY (group_id) REFERENCES groups (id)
)

现在,例如,如果您希望从my_group查询所有用户,则可以通过几个联接来做到这一点:

SELECT u.*
FROM   users u
JOIN   group_membership gm ON u.id = gm.user_id
JOIN   groups g ON gm.group_id = g.id
WHERE  g.name = 'my_group'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM