项目开发过程中要不要使用外键

​项目开发过程中,外键是加还是不加,分享一下个人的经验,供参考

有两位小伙伴提到了外键这个问题,如下:

 

本期就“是否使用外键”这个问题,分享一下个人的经验,供参考

数据库设计中,有很多键,像主键、索引键、唯一键,这些都是标识一张表内部的数据关系,而外键是标识多张表之间的数据关系

01 外键的优点

使用外键主要有两个优点:

  • 数据准确,表跟表之间有一层外键约束着,让表数据更准确,不至于一堆的数据冗余或数据缺失。

  • 表关系明了,数据库设计在项目开发过程中很重要,有了外键,通过ER图,一眼就能看出表和表之间的关系。

02 外键的缺点

虽然有上面的优点,但是实际项目开发过程中,需求是一直在迭代变化的,表跟表的关系也会随之变化,这时候外键就会变成累赘,总结两个缺点:

  • 数据刷库,实际开发过程中,免不了要经常刷库,导入或删除数据,外键的存在会让表删除或插入失败(表数据变更有顺序要求)

  • 外键维护,随着项目的迭代,表之间的关系也会发生变化,比如有个外键需要删除;或是要新增一个外键,但由于现有数据不准,导致外键加不上去,久而久之,ER图也不能完整的显示表关系,这ER图看还是不看?

03 个人项目经验

就我这么多年做的项目来说,没有哪个项目是加外键的,都是靠Java代码来维护表数据关系。

怕数据缺失?加事务!

怕数据冗余?加事务!

—————— THE END  ——————

原文链接:http://www.jiawablog.com/detail?id=165475836407975936

甲蛙博客,专注Java全栈技术分享

公众号:甲蛙全栈

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值