我有以下数据库架构:
create table people (
id integer primary key autoincrement,
);
create table groups (
id integer primary key autoincrement,
);
我已经有哪些人是哪个组的成员在一个单独的文件中(让我们说在(person id
,group id
的元组中)。我如何构建我的数据库模式,这样很容易访问一个人的组,也很容易访问组的成员?阅读我目前拥有的元组是困难和缓慢的,所以我希望这是以数据库形式。我不能有像{{1 }},member1
等作为列,因为组中的人数目前是无限的。
答案 0 :(得分:15)
将文本文件移动到数据库表中
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';