4

我有以下数据库架构:

create table people (
    id integer primary key autoincrement,
);

create table groups (
    id integer primary key autoincrement,
);

并且我已经在一个单独的文件中知道了哪些人是哪些组的成员(假设在 ( person id, group id) 的元组中。我如何构建我的数据库模式,以便轻松访问一个人的组,也易于访问一个组?读取我目前拥有的元组既困难又慢,所以我希望它是数据库形式。我不能将member1,member2等作为列,因为当前组中的人数是无限。

4

1 回答 1

17

将文本文件移动到数据库表中

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';
于 2013-05-14T18:18:23.217 回答