我有以下数据库架构:
create table people (
id integer primary key autoincrement,
);
create table groups (
id integer primary key autoincrement,
);
我已经在一个单独的文件中知道了哪些人属于哪些组(假设是 (person id
, group id
) 的元组)。我该如何构建我的数据库模式使得访问一个人的组很容易,也很容易访问组的成员?读取我目前拥有的元组既困难又慢,所以我希望它是数据库形式。我可以'将 member1
、member2
等作为列,因为组中的人数目前没有限制。
最佳答案
将文本文件移动到数据库表中
CREATE TABLE groups_people (
groups_id integer,
people_id integer,
PRIMARY KEY(group_id, people_id)
);
然后选择组 7 中的所有成员
SELECT * FROM people p
LEFT JOIN groups_people gp ON gp.people_id = p.id
WHERE gp.groups_id = '7';
然后选择第5个人所在的所有组
SELECT * FROM groups g
LEFT JOIN groups_people gp ON gp.groups_id = g.id
WHERE gp.people_id = '5';
关于sql - 使用多对多连接 sqlite 中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16549971/