web-dev-qa-db-ja.com

2つの主キーを指す外部キーを作成するにはどうすればよいですか?

データベース構造を単純化しようとしていますが、2つのテーブルmatchesteam_statisticsがあります:

enter image description here

ここでteam_statisticsテーブルでは、team_statistics.team_idmatches.teams_idmatches.teams_id1を参照する外部キーである必要があり、同様にteam_statistics.group_idmatches.groups_idmatches.groups_id1を参照する外部キーである必要があります。

PostgreSQLでこれを行う方法は?

matchesteam_statisticsの間に別のテーブルを作成してこれを行う他の方法がある場合は、提案を受け付けていますが、2つの主キーを参照する1つの外部キーを作成する方法を知りたいと思います。

チームをどこかのグループに追跡する必要があると思います。何かのようなもの:

CREATE TABLE team_groups (
    team_id int,
    group_id int,
    primary key (team_id, group_id)
);

次に、これに対して2つの外部キーを持つmatchesテーブルが必要です。次に、統計テーブルもそれを参照する必要があります。

Team_statisticsからマッチへの複数の外部キーを作成することもできますが、これを行うと、チームがマッチの一方の側ともう一方の側の両方になるまで統計を取得できなくなります。

0
Chris Travers