2016-10-21 4 views
0

У меня есть две таблицы, таблица Project и User. Ниже взаимосвязь между этими двумя таблицамиМоделирование отношения «многие ко многим»

Проект может быть связан с несколькими пользователями
Пользователь может работать с несколькими проектами

Я создал ниже отношения сущностей. Является ли это правильным способом представления отношений многих?

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

BTW, старайтесь избегать смешанных имен фраз и зарезервированных ключевых слов в именах таблиц и столбцов.

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) 
); 
Смежные вопросы