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

甲蛙全栈

共 594字,需浏览 2分钟

 ·

2021-04-02 14:23



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


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

bf98fc0b8e53718b3c9744141bec9aba.webp


20c1aab034d115a868579a3591e5527f.webp

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


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


01


外键的优点


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

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

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



02


外键的缺点


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

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

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



03


个人项目经验


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


怕数据缺失?加事务!

怕数据冗余?加事务!


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


扫码关注,好文不错过



浏览 27
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报