2016-10-21 60 views
0

我有兩個表,表ProjectUser。下面是這兩個表建模多對多關係

一個項目可以與多個用戶
用戶可以運行在多個項目

我在下面的實體關係建立關聯關係。這是代表多對多關係的正確方法嗎?

User: 
    id 
    name 
    email 

Project: 
    id 
    name 

User_Project: 
    user_id 
    project_id 

回答

0

是的,只要你有外鍵關係(user_id) REFERENCES "user"(id)和定義(project_id) REFERENCES project(id)PRIMARY KEY (user_id, project_id)

順便說一句,嘗試避免混合大小寫名稱和表名列中的保留關鍵字。

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) 
);