项目开发过程中,外键是加还是不加,分享一下个人的经验,供参考
有两位小伙伴提到了外键这个问题,如下:
本期就“是否使用外键”这个问题,分享一下个人的经验,供参考
数据库设计中,有很多键,像主键、索引键、唯一键,这些都是标识一张表内部的数据关系,而
外键是标识多张表之间的数据关系
。
01 外键的优点
使用外键主要有两个优点:
-
数据准确
,表跟表之间有一层外键约束着,让表数据更准确,不至于一堆的数据冗余或数据缺失。 -
表关系明了
,数据库设计在项目开发过程中很重要,有了外键,通过ER图,一眼就能看出表和表之间的关系。
02 外键的缺点
虽然有上面的优点,但是实际项目开发过程中,需求是一直在迭代变化的,表跟表的关系也会随之变化,这时候外键就会变成累赘,总结两个缺点:
-
数据刷库
,实际开发过程中,免不了要经常刷库,导入或删除数据,外键的存在会让表删除或插入失败(表数据变更有顺序要求) -
外键维护
,随着项目的迭代,表之间的关系也会发生变化,比如有个外键需要删除;或是要新增一个外键,但由于现有数据不准,导致外键加不上去,久而久之,ER图也不能完整的显示表关系,这ER图看还是不看?
03 个人项目经验
就我这么多年做的项目来说,没有哪个项目是加外键的,都是靠Java代码来维护表数据关系。
怕数据缺失?加事务!
怕数据冗余?加事务!
——————
THE END
——————
原文链接:
http://www.jiawablog.com/detail?id=165475836407975936
甲蛙博客
,专注Java全栈技术分享
公众号:甲蛙全栈