在Stack Overflow的答案中,我看到了这段代码:
CREATE TABLE Favorites (
user_id INT NOT NULL,
movie_id INT NOT NULL,
PRIMARY KEY (user_id, movie_id),
FOREIGN KEY (user_id) REFERENCES Users(user_id),
FOREIGN KEY (movie_id) REFERENCES Movies(movie_id)
);
我之前从未使用过'外键'关系关键字。
答案 0 :(得分:14)
外键是对另一个表中的主键或表本身的引用。它用于所谓的 referential integrity 。基本上在您提供的表格中,要将记录插入Favorites
- 您必须从user_id
表格中提供有效的Users
,并从中提供有效的movie_id
Movies
表。使用外键时,我无法从Users
或Movies
删除记录。如果我没有外键,我可以删除这些记录。然后,如果我在SELECT ... JOIN
上执行Favorites
,它就会中断。
请参阅Wikipedia。
答案 1 :(得分:12)
外键描述了两个表之间的关系。它有很多好处:
如果您使用的是MyISAM,则不支持外键。
答案 2 :(得分:1)
您还可以添加删除相关记录时级联的功能。例如,如果我在相关的“book”表中有一个包含许多书籍的库表,并且我从库表中删除了一个给定的库,那么它的相关书籍记录也将被删除。