数据库该不该使用外键

问题引入

以前的意识里都是需要建立外键,外键能起到约束作用,能保证数据的完整性和一直性,比如如果没有外键约束,你自己程序控制又不到位把基本信息都删除了,详情却存在,人的基本信息不存在了,工资信息里却存在这个人,想要找这个人究竟是谁都找不到。

今天看到原来的外键都被去掉了,问了下组长,结果回答就两个字“效率”,虽然感觉很诧异,但是毕竟人家比我有经验并没有去争论,下面将站在两个对立面去赞成和反对建立外键。

建与不建

注意这里说的建与不建不是说不要外键,尽可能把表弄成一张表,而是说人为控制还是数据库使用本身外键约束。

利用数据库保证数据库完整性和一致性;自己用程序控制怕有疏忽,外键多起来麻烦;同一个数据库可能给不同应用用,但是开发数据库的人并不是开发应用的人,开发应用的人对数据库不够了解,就算开发数据库的人去开发应用时间长也会忘记;

不建

导数据入库要有先后顺序,而且也会检查外键是否存在,十分消耗时间;删除数据也是;还有就是可能数据建立的约束可能效率不够高,想自己建立高效的约束。

总结

我自己觉得完整性和一致性肯定是需要保证的,不然会出问题,也会影响效率,需要看你项目又多大。

小型项目就使用数据库本身的,效率追求不高,也没必要花时间自己建立约束,时间代价比较大。
较大型项目可能数据约束本身效率不够好,满足不了大项目对效率的要求,又有人力物力去支持建立自己的高效约束。
还有较大项目初期,想早点上线,效率要求没有那么大,没时间去建立高效率约束,那么就用数据库本身的约束,项目初期要求稳定一些比较好。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值