2016-10-21 13 views
0

テーブルProjectUserの2つのテーブルがあります。以下は多対多関係のモデリング

Aプロジェクトは、複数のプロジェクト

私はエンティティ関係の下に作成した

に複数のユーザー
ユーザーが動作可能に関連付けることができ、これらの2つのテーブル間の関係があります。これは多対多の関係を表す正しい方法ですか?あなたは外部キー関係(user_id) REFERENCES "user"(id)(project_id) REFERENCES project(id)定義されたとPRIMARY KEY (user_id, project_id)を持って提供

User: 
    id 
    name 
    email 

Project: 
    id 
    name 

User_Project: 
    user_id 
    project_id 

答えて

0

はい、。

ところで、テーブル名と列名に大文字と小文字の混在したケース名と予約語句は使用しないでください。

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