我正在使用Postgres 9.6.2創建電影和電視節目流服務數據庫(用於學校項目)。我遇到了以下錯誤:PostgresSQL:僅引用複合主鍵的一部分的表
沒有唯一約束相匹配的引用表中給出鍵「watchedepisodes」
的TVratings見下表將採取一檔電視節目,只要用戶觀看在至少一集(顯示在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)
);
想知道是否有辦法只引用該組合鍵的一部分。這些只是我的兩張桌子,所以如果需要進一步的信息,我可以添加更多。
你知道的另一種方式,我可以如果我不能做一個部分匹配,去解決這個問題? –
@HannahRiedman更新。如果這個答案對您有用,請考慮將其標記爲已選,並將問題標記爲可能應該移至[dba.se]的問題。 ;) –