聊聊:数据库中为什么不推荐使用外键约束

参考文献:database.51cto.com/art/201811/587914.htm


    想起大学刚毕业的时候,在一家做保险系统二次开发的公司做软件工程师,那时候我接触到了他们系统的数据库,查看了下他们系统使用到的表,并了解到他们表之间的关系,发现根本没有任何一处地方用到外键约束,而且身边的元老都强烈要求不要使用外键,我当时就很纳闷,这就和我在大学学的数据库知识点有点出入了。后来在代码coding的时候,两张表之间的关系操作,我们都在应用层完成,久而久之,这样给我的感觉就是数据库变得没那么复杂,数据表之间非常独立,而且也非常的清晰每张表是有什么作用。

    今天浏览到了这篇文章,也算加深我对数据库在使用外键约束上一些见解。外键约束虽然保证了表间数据的关系“始终完整“,然而在很多公司上,都不太建议在数据库中使用外键约束,因为这样一方面,增加数据库的复杂性,也会给数据库带来性能上的消耗,如果能在应用层解决,或许很多码农也愿意去写多几行代码去完成表间数据完整性的判断,也不会去增加底层数据库的复杂性

    总结:

        外键约束带来的优点

      1. 保证数据的完整性和一致性

      2. 级联操作方便

      3. 将数据完整性判断托付给数据库完成,减少了程序的代码量

        

        外键约束带来的缺陷

      1. 性能问题

      2. 并发问题

      3. 扩展性问题

      4. 技术问题

猜你喜欢

转载自blog.51cto.com/13610346/2324070