外键vs加入

时间:2010-06-01 05:24:09

标签: sql

在表中使用外键是否更好?或者使用连接可以获得相同的结果吗?

2 个答案:

答案 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

  • 如果有FK,
  • JOIN可以正常工作。

  • 如果您使用或不使用JOIN来提取数据,则可以使用FK。

结论: FK和JOIN不允许您实现相同的目标!