私はPostgres 9.6.2を使用して、映画やテレビ番組のストリーミングサービスデータベース(学校プロジェクト用)を作成しています。私は、次のようなエラーに実行しています:PostgresSQL:複合主キーの一部のみを参照するテーブル
参照表「watchedepisodes」に指定されたキーに一致するユニーク制約
は、以下のTVratingsテーブルは限り利用者がで見たように、テレビ番組を取るはありません少なくとも1つのエピソード(これはWatchedEpisodesテーブルに表示されます)を入力し、ユーザーがそれを評価できるようにします。 WatchedEpisodesにはユーザーID、テレビ番組ID、シーズン、エピソードの複合プライマリキーがあるため、そのテーブルから単にuidとtidの複合キーを参照することはできません。
CREATE TABLE WatchedEpisodes (
uid int unique references Users(uid),
tid int,
season int,
episode int,
FOREIGN KEY(tid, season, episode) REFERENCES Episodes(tid, season, episode),
PRIMARY KEY (uid, tid, season, episode)
);
CREATE TABLE TVRatings (
uid int,
tid int,
rating int check (rating > 0 and rating < 6),
FOREIGN KEY(uid, tid) REFERENCES WatchedEpisodes(uid,tid),
PRIMARY KEY(uid, tid)
);
複合キーの一部のみを参照する方法があるかどうかわかりません。これらは私のテーブルの2つだけなので、さらに情報が必要な場合は、さらに追加することができます。
あなたは私ができる別の方法を知っていますか私は部分的な一致を行うことができない場合は、この問題については? –
@HannahRiedmanが更新されました。この回答があなたにとって有益だった場合は、それを選んだものとしてマークし、疑問点を[dba.se]に移してください。 ;) –