数据库关系

时间:2009-03-15 03:05:35

标签: sql database table-relationships

是否在数据库帮助中设置了正确的关系以及除数据完整性之外的任何其他内容?

他们会改善或阻碍表现吗?

8 个答案:

答案 0 :(得分:3)

只要您有与外键对应的明显索引,就不会对性能产生明显的负面影响。这是您必须使用的更加简单的数据库功能之一。

答案 1 :(得分:1)

它既不会有助于也不会以任何重要方式伤害表现。唯一的障碍是在插入/更新/删除时检查完整性。

外键是数据库设计的重要组成部分,因为它们可确保一致性。您应该使用它们,因为它提供了最低级别的保护,防止可能破坏您的应用程序的数据搞砸。另一个好处是数据库工具(可视化/分析/代码生成)使用外键来关联数据。

答案 2 :(得分:1)

我必须说,正确的关系将有助于人们更好地理解数据(或数据的意图),而不是省略它们,特别是因为维护它们的总体成本非常低。

除了在架构方面,它们的存在并不妨碍性能(正如其他人所指出的那样,数据完整性偶尔会导致可能产生一些影响的外键冲突)但是恕我直言的好处(如果正确使用)会超过恕我直言。

我知道你不是在问是否使用FK,但我认为我只是添加了几个关于为什么要使用它们的观点(并且必须处理后果):

还有其他注意事项,例如,如果您计划使用ORM(可能稍后),您将需要外键。它们对于ETL /数据导入和导出以及稍后的报告和数据仓库也非常有用。

如果其他应用程序将使用该模式,这也很有用 - 因为外键实现了基本的业务逻辑。因此,您的应用程序(以及任何其他应用程序)只需要了解关系(并尊重它们)。它可以保持数据的一致性,并且最有可能减少任何消费应用程序中的数据错误数量。

最后,它为您提供了一个相当不错的提示,指示放置索引的位置 - 因为您可能会以FK值查找表数据。

答案 3 :(得分:0)

  

数据库中的关系是否会改善或阻碍性能?

与工具箱中的任何工具一样,您获得的结果取决于您如何使用它。正确指定的关系和精心设计的逻辑数据库可以为性能带来巨大的好处 - 例如,考虑搜索规范化和非规范化数据之间的差异。

答案 4 :(得分:0)

根据您的数据库引擎,通过外键约束定义的关系可以提高性能。约束允许引擎对密钥父端的表中数据的存在做出某些假设。

可以在http://www.microsoft.com/technet/abouttn/flash/tips/tips_122104.mspx找到MS SQL Server的简要说明。我不了解其他引擎,但这个概念在其他平台上是有意义的。

答案 5 :(得分:0)

无论您是否声明数据,都存在数据关系。通过FK约束声明和强制执行关系将防止数据中的某些类型的错误,而在发生插入/更新/删除时以较低的成本检查数据。

通过关系声明级联删除有助于在删除数据时防止出现某些类型的错误。

了解这些关系有助于在形成查询时灵活,正确地使用数据。

很好地设计表格可以使关系更加明显和有用。使用数据中的关系是首先使用关系数据库的主要动力。

答案 6 :(得分:0)

关于对性能的影响:根据我使用MS Access 2003的经验,如果您有一个多用户应用程序并使用关系来强制执行大量的引用完整性,那么您可以在响应时间方面受到重创 - 用户。

有不同的方法来处理强制参照完整性。我决定在关系中采取一些规则,在前端建立更多的执法,并且生活中会丢失一些RI。当然,在多用户环境中,您需要非常小心这一点自由。

答案 7 :(得分:0)

根据我构建性能敏感数据库的经验,外键会严重影响性能,因为每次插入/更新引用记录或删除主记录时都必须检查它们。如果您需要证明,只需查看执行计划。

我仍然保留它们用于文档和工具,但我通常会禁用它们,尤其是在只能通过应用程序层访问数据库的高性能系统中。

相关问题