当前位置:首页 > 开发 > 数据库 > 正文

为何外键不再推荐使用

发表于: 2015-07-16   作者:hugh.wang   来源:转载   浏览:
摘要: 表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。 在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不
表的关联,是一种逻辑关系,并不需要进行物理上的“硬关联”,而且你所期望的关联,其实只是其数据上存在一定的联系而已,而这种联系实际上是在设计之初就定义好的固有逻辑。

在业务代码中实现的时候,只要按照设计之初的这种固有关联逻辑来处理数据即可,并不需要在数据库层面进行“硬关联”,因为在数据库层面通过使用外键的方式进行“硬关联”,会带来很多额外的资源消耗来进行一致性和完整性校验,即使很多时候我们并不需要这个校验。

所以一般不建议在数据库中使用外键约束来保证数据的一致性和完整性。

若是高并发大流量事务场景,使用外键可能容易造成死锁,以及数据库资源出现瓶颈,所以一般互联网行业高频率高并发不建议使用

如何体现表与表之间的关联性和如何维护数据完整性和一致性:
1.关联性:设计数据表的时候,约定关联字段
2. 维护数据完整性和一致性:通过程序控制,启用事务的方式

为何外键不再推荐使用

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Introduction Android default Database engine is Lite. SQLite is a lightweight transactional d
  Alexa数据显示,自2010年2月开心网推出一款“开心餐厅”的游戏带来了一次流量高峰之后,便一路
又名: Ruby for Rails: Ruby Techniques for Rails Developers 译者: 吴畅欣 / 张明生 作者: 布莱克
Android开发中一般都是使用Intent给Activity传参。有时需要传复杂对象时,我们会倾向于用全局变量(
1 建表 pd11建立物理模型,在面板“Palette”中 利用“Table”控件建表,建立3个表,用户表、角色表
这的PRI和MUL的含义是什么意思呢? 1. 如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或
在物理模型图上创建, 点击palette中的Reference,选择子表拉到父表,这样就出了一条关系线 双击关
删除一个表时,提示有外键约束,ORA-02292: 违反完整约束条件 () - 已找到子记录 先查出对应的外键
设置主键: 右键表→设计,在需要的列上右键→设置主键 或者在创建表的时候,在想要作为索引的列后
1.主键分为:逻辑主键和业务主键 逻辑主键:没有任何的含义,只是为了标识当前列在当前数据库表里的
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号