SQL Server外键约束的好处

Hem*_*ank 7 sql foreign-keys

我们正在设计一个数据库,我需要考虑一些FK(外键)约束.但它不仅限于正式的结构化和规范化.我们只有在提供任何性能或可扩展性优势时才会使用它.

我一直在通过一些有趣的文章和谷歌搜索实际的好处.以下是一些链接:

http://www.mssqltips.com/tip.asp?tip=1296

我想更多地了解FK的好处(除了正式的结构和着名的级联删除\更新).

  • FK默认情况下没有"索引",因此在索引FK时需要考虑哪些因素?

  • 如何处理映射为外键的可空字段 - 这是允许的吗?

  • 除了索引之外,这是否有助于优化SQL-Server中的查询执行计划?

我知道还有更多,但我更愿意专家就此发表意见.请指导我.

And*_*nes 9

  • 外键不提供性能或可伸缩性优势.
  • 外键强制引用完整性.如果有人试图从父表中删除错误的行,则可以通过引发错误来提供实际的好处.
  • 默认情况下,外键未编入索引.您应该索引外键列,因为这样可以避免在删除/更新父行时对子表进行表扫描.
  • 您可以使外键列可为空并插入null.


Luk*_*ský 6

主要好处是,如果您的错误客户端代码试图做错了,您的数据库将不会最终不一致.外键是一种"约束",所以你应该如何使用它们.

他们没有任何"功能"好处,他们不会优化任何东西.您仍然必须自己创建索引等.是的,您可以在作为外键的列中具有NULL值.