MySQL数据库应不应该拿掉一切的外键束缚?ITeye - 千亿集团

MySQL数据库应不应该拿掉一切的外键束缚?ITeye

2019-01-10 23:38:24 | 作者: 铭晨 | 标签: 外键,数据,数据库 | 浏览: 1770

我不太喜爱外键,
原因:
1.程序逻辑,完整性,我会在存储进程或包等当地做谨慎的判别;
2.功能问题,这是我最不喜爱用的要害原因,比方一个事务流水表,频频刺进数据,假如这个表身上有3外键,那么每次刺进一条,就必须对这3个外键对应的3个表做相应的查找判别有无对应数据,假如这3个表也很大,那就这3个表的判别时刻就很常,尽管外键指向的相关表的字段肯定是索引,可是我觉得许多时分,这样的判别原本就在程序里操控好了,经过外键再判别一次,便是下降功能;并且其实有的当地判不判别也无所谓的,可是用了外键,就必须化时刻去判别,不管oracle内部多么优化外键关于数据的检索速度,它总是一个不小的耗费;
3.保护费事,许多公司的软件都是定制的,这种定制的东西,随意性相对较大,项目开发施行进程中,需求常常对表修修补补;还有便是事务逻辑有bug或许其他状况,需求常常手艺保护数据,有扑朔迷离的外键相关着,很是费事;
4.不灵敏,外键定死了两个表之间数据的先后生成联系,最常见的是单据主从表,有的时分,在生成单据的时分,是先生成明细,再生成主表;假如钉死了外键,这个就无法完成;
当然有些要害的事务,的确需求外键;
为什么说这个论题,我今日把项目数据库建立好后,用了很少的外键,周围搭档说数据不谨慎,需求扑朔迷离的那些相同字段名的外键都建立起来,这个我很不甘愿;
比方这个数据库总共100个表,按他们的主意,外键就可能有300个;我晕,太教条主义了;
假如说让我建300个索引,我很愿意,由于进步运作功率的,而外键仅仅检测谨慎性,对数据库的运作功率只要下降,没有任何进步的可能性;

 

http://segmentfault.com/q/1010000000401455

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表千亿集团立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    exceptionITeye

    成果,形似,有点
  • 2
  • 3

    mysql的count函数优化ITeye

    索引,优化,情况
  • 4
  • 5

    DB2锁机制ITeye

    机制,程序,数据
  • 6

    oracle功能优化总结ITeye

    索引,视图,优化
  • 7

    oracle存储进程ITeye

    存储,进程,数据
  • 8

    Oracle中rownum、rowid、rowITeye

    相同,记载,排名
  • 9
  • 10