2015-11-10 84 views
0

我試圖創建這兩個表:這些表有什麼問題?

CREATE TABLE Game_Reviews( 

PRIMARY KEY(game_review_id, game), 
game_review_id int, 
game int, 
date_posted date, 
content varchar(100), 
verified_reviewer varchar(20) FOREIGN KEY REFERENCES Verified_Reviewers, 
FOREIGN KEY(game) REFERENCES Games 
) 

CREATE TABLE Game_Review_Comments(

PRIMARY KEY(comment_id, game_review), 
comment_id int, 
game_review int FOREIGN KEY REFERENCES Game_Reviews, 
member varchar(20) FOREIGN KEY REFERENCES Members 

) 

但我發現了一個錯誤說:

列在引用列列表中的外鍵「FK__Game_Revi__game___2022C2A6」做數與引用表'Game_Reviews'中的主鍵不匹配。

雖然我不確定,但我有一種感覺,這個錯誤是由於這樣的事實,即當我在第二個表中引用Game_Reviews時,它不知道要使用哪個主鍵。我怎樣才能解決這個問題?

+0

[MySQL中的多列外鍵?]可能的重複(http://stackoverflow.com/questions/953035/multiple-column-foreign-key-in-mysql) – Cristik

+0

FK必須匹配一個鍵(例如PK)列數字和數據類型。 game_review int外國關鍵參考Game_Reviews沒有。 – jarlh

+0

怎麼回事? Game_Reviews也有一個int主鍵。 – ninesalt

回答

0

你面對的是所有站在錯誤消息中的問題:

列在引用列列表外鍵 「FK__Game_Revi__game___2022C2A6」不匹配的那些初級 鍵的數量引用表'Game_Reviews'。

問題是您的外鍵與您的主鍵不匹配。 這是因爲game_reviews中的主鍵由2個不同的列組成,而您的外鍵僅包含1列。

因此,您將不得不在Game_Review_Comments中創建包含對game_review_id和遊戲引用的組合外鍵。

雖然從我的理解你的表結構,我認爲你真的應該再次檢查,如果你真的需要一個組合的主鍵,而不是隻有game_review_id作爲id(我沒有看到任何優勢,有兩列作爲一部分的主鍵)。

對於game_review_comments也是如此。在這裏你也有一個組合的主鍵。因此,您將始終需要2列來將其作爲外鍵引用。而且在這裏,我想說你應該重新考慮把它變成1列主鍵,因爲它似乎沒有任何優勢讓我成爲2列(兩個表)。