调研主题:
有没有什么场景是需要使用上外键的?
不用外键,增加迁移难度和维护难度
外键一般情况下我们不用外键,但是有部分的业务是需要外键的
外键能保证数据的完整性和一致性,但也会带来很多问题。
1.外键每次修改数据都需要检查其他相关表的数据情况,增加数据库资源消耗,且高并发也容易造成死锁。
2.在水平拆分和分库的情况下,外键是无法生效的。
3.外键实际上相当于本来将业务程序上应该做的事情,交由数据库实现,但通常情况数据库资源比业务程序的资源消耗更大,且更难扩展。
外键能保证数据的完整性和一致性,会带来不便维护和迁移
ORM
外键在数据量很少的时候可以把代码中要做的事情交给数据库去维护,数据量大不适用
基本都是为了迁移或兼容老的数据吧,不用外键就解决不了的好像还真没碰到过
确实,现在已经很少用外键了
外键之前在原生MySQL场景用的比较多,现在基本不用了。
作为大数据或者数据分析,要是有外键可以很方便知道各表之间的关联关系,不需要咨询业务开发
为了保证业务的一致性,这个没有对错,看业务量和业务发展及研发资源。
1、开发水平差,外键来凑。
2、搞不定研发,外键来凑。
从跟上解决,搞定数据库,搞定研发。
CRM,人资上面需要强完整性依赖关系数据表
小规模,数据要求严格的场景
一致性,一致性,一致性
大多数使用外键的场景是由于老系统或者经验不太足的程序员写的,有时候为了偷懒,直接将数据处理的逻辑交给数据库了。
传统开发 外键用的还挺多 , 新型业务早都不准用了
哪些业务会用到外键?
从来不用,也不推荐用外键。