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