2016-10-14 23 views
0

ID、プロジェクトID、およびユーザーIDで構成される複合主キーを持つテーブル(チーム)を作成しました。各主キーは、idを除く他のテーブルのキーを参照します。今私はサブチームに対応したいので、チームのIDを参照するキー(team_id)を追加したいと思います。このteam_idには親チームのIDが含まれています。Postgresql - 参照先テーブルに与えられたキーと一致する唯一の制約はありません。自分のテーブルからキーを参照する

'参照されたテーブル "team"に指定されたキーに一致する一意の制約はありません。

私は、コンポジットプライマリキーの各キーの可能な組み合わせがチーム固有の制約であることを理解していませんか? 私は何が欠けていますか?

CREATE TABLE team (

id varchar NOT NULL, 
project_id varchar NOT NULL, -- team should always have associated project 
user_id varchar NOT NULL, -- team member id 
team_id varchar, -- parent team id 
create_date date NOT NULL, 
create_time time NOT NULL, 
name varchar, 
description text, 
PRIMARY KEY (id, project_id, user_id), 
FOREIGN KEY (project_id) REFERENCES project (id) 
    ON UPDATE CASCADE 
    ON DELETE CASCADE, 
FOREIGN KEY (user_id) REFERENCES person (id) 
    ON UPDATE CASCADE 
    ON DELETE CASCADE, 
FOREIGN KEY (team_id) REFERENCES team (id) 
    ON DELETE CASCADE 
    ON UPDATE CASCADE 
); 

答えて

0
parent_team_id varchar, 
parent_team_project_id varchar, 
parent_team_user_id varchar, 
foreign key (
    parent_team_id, parent_team_project_id, parent_team_user_id 
) references team (id, project_id, user_id); 

しかし、主キーが奇妙です。本気ですか?

関連する問題