我有兩個表,表Project
和User
。下面是這兩個表建模多對多關係
一個項目可以與多個用戶
用戶可以運行在多個項目
我在下面的實體關係建立關聯關係。這是代表多對多關係的正確方法嗎?
User:
id
name
email
Project:
id
name
User_Project:
user_id
project_id
我有兩個表,表Project
和User
。下面是這兩個表建模多對多關係
一個項目可以與多個用戶
用戶可以運行在多個項目
我在下面的實體關係建立關聯關係。這是代表多對多關係的正確方法嗎?
User:
id
name
email
Project:
id
name
User_Project:
user_id
project_id
是的,只要你有外鍵關係(user_id) REFERENCES "user"(id)
和定義(project_id) REFERENCES project(id)
和PRIMARY KEY (user_id, project_id)
。
順便說一句,嘗試避免混合大小寫名稱和表名列中的保留關鍵字。
您的方法是正確的。
因爲用戶可以加入多個項目,所以需要添加聯結表。
結表還可以包含附加的列。
就你而言,知道用戶何時加入項目可能會有用。 所以你可以添加一個列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)
);