在表中使用外键是否更好?或者使用连接可以获得相同的结果吗?
答案 0 :(得分:62)
Foreign keys只是强制执行referential integrity的约束。您仍然需要使用JOINs来构建查询。
外键保证表order_details
中具有引用order_id
表的字段orders
的行永远不会具有order_id
值,该值不存在于orders
表中{{1}}表。外键不需要具有工作关系数据库(实际上MySQL's default storage引擎不支持FK),但它们对于避免破坏关系和孤立行(即参照完整性)绝对必不可少。
答案 1 :(得分:26)
FOREIGN KEY
s 和 JOIN
s 不做同样的事情!
FOREIGN KEY
强制执行数据完整性,确保数据在添加到数据库时确认一些规则。当您通过提供如何选择数据的规则从数据库中提取/查询数据时,会使用 JOIN
。
JOIN
可以正常工作。
JOIN
来提取数据,则可以使用FK。 结论: FK和JOIN
不允许您实现相同的目标!