首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我在没有在MySQL中定义外键的情况下对数据库建模怎么办?

如果我在没有在MySQL中定义外键的情况下对数据库建模怎么办?
EN

Stack Overflow用户
提问于 2017-04-09 03:08:14
回答 1查看 38关注 0票数 0

场景1:正确定义外键

场景2:关于删除和更新记录的,我可以确保在不定义任何FK的情况下编写API时不会留下孤立的数据。此外,我将在插入时检查数据完整性。

那么,这两种情况之间有什么区别呢?我只想知道使用FK (定量分析)会得到什么好处。我会在场景1比2中获得更好的性能吗?我是MySQL数据库设计方面的新手。

EN

回答 1

Stack Overflow用户

发布于 2017-04-09 05:20:15

表演差异..。

FK检查必须到达另一个表(通过索引)进行完整性检查。然而..。

情况1:简单的FK:

在许多情况下,您可以通过了解应用程序代码的流程,向自己保证某些FK违规行为“不会”发生。例如,当您插入一行中的两个表(并且检查了错误等),而第二个表指向您刚刚插入的第一个表的行时,那么FK测试是多余的,会损害性能(有点)。

另一方面,如果您通过执行额外的SELECT来“模拟”FK检查,那将是一个显著的性能打击。

情况2: FK,级联删除:

如果您使用FKs来“级联删除”(等等),那么这可能比手动删除更有效。

此外,如果您可以对DELETEs进行批处理,那么它可能比让级联一个接一个地完成它们更快。

另一条评论:“副作用”,如‘级联’被认为(被一些人认为)是一个顽皮的编码实践。

但是..。以上的差异可能不足以改变你的应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43302633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档