建模多对多关系

时间:2016-10-21 07:27:57

标签: database postgresql

我有两个表,表ProjectUser。以下是这两个表之间的关系

  

项目可以与多个用户相关联   用户可以在多个项目上操作

我创建了以下实体关系。这是表示多对多关系的正确方法吗?

User:
    id
    name
    email

Project:
    id
    name

User_Project: 
    user_id
    project_id

2 个答案:

答案 0 :(得分:0)

是的,前提是您已定义外键关系ano De. Cre.B.sadate 56 100 0 100 12/09/2006 57 000 50 50 13/09/2006 56 00 60 40 14/09/2009 (user_id) REFERENCES "user"(id)以及(project_id) REFERENCES project(id)

BTW,尽量避免在表名和列名中使用混合大小写名称和保留关键字。

答案 1 :(得分:0)

你的方法是正确的。

由于用户可以加入多个项目,因此需要添加联结表。

enter image description here

连接表还可以包含其他列。

在您的情况下,了解用户何时加入项目可能很有用。 因此,您可以在存储该信息的位置添加 join_date 列。

create table users
(
  id            serial,
  name          text,
  email         text,

  primary key (id) 
);

create table projects
(
  id            serial,
  name          text,

  primary key (id)    
);

create table users_projects
(
  user_id       int,
  project_id    int,
  join_date     date,

  primary key (user_id, project_id),
  foreign key (user_id) references users (id),
  foreign key (project_id) references projects (id)
);