我正在开发一个Android应用程序,人们将在其中注册并加入群组。
我有一个单独的MySQL表,用于存储用户的详细信息,另一个表用于存储组的详细信息。但我有问题将用户与群组相关联。
users表将包含user_id
,name
,password
,email_id
,address
等。组表将包含group_id
, group_name
以及有关该组的其他详细信息。
我一定能够得到
快速轻松。
注意:假设您有超过10万用户和超过1000个群组。
答案 0 :(得分:5)
这样做的惯用方法是拥有一个额外的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'