数据库-三范式优化与不推荐使用外键

时间:2021-04-19 15:18:02   收藏:0   阅读:0

什么是三范式

三范式优化

拆分表,一张有依赖传递的表,如(blog、blog_class、blog_class_description),拆分成 blog(主表)、blog_class+blog_class_description(依赖关系表)、blog+blog_class(关联关系表)

反三范式优化

  • 在概念数据模型设计时遵守第三范式,降低范式标准的工作放在物理数据模型时考虑。
  • 适当的合并一些表的字段(减少表的数量),产生一些字段冗余,降低了查询时的关联,有时候可以提高查询效率。
  • 因为在数据库操作中,DQL的比例是要远大于DML的
  • 反三范式优化一定要适度,并且是在原本满足但三范式的基础上做调整的。

为什么不推荐使用外键

外键的优点

1、数据一致性

由数据库自身保证数据一致性、完整性会更可靠。

2、ER图可靠性、可读性

有主外键的数据库可以增加数据库可读性

外键的缺点

1、级联

在阿里巴巴开发手册中,就强制要求不允许使用外键,所有的外键概念必须在应用层解决,因为每次级联DML操作时,都要级联操作相关的外键表,在高并发场景会导致性能瓶颈。

2、数据库压力增加

外键等于将数据库一致性实现,全部交给数据库服务器完成,有了外键,当进行DML操作后,需要出发相关的操作去检查,应用程序执行的判断转移到了数据库上,增加资源消耗,数据库性能开销变大。

3、死锁

每次修改都要去另外的表检查数据,获取额外的锁。高并发大流量事务场景,使用外键可能容易造成死锁。

4、开发、维护不方便

有外键在需要手工维护数据时,都需要考虑级联问题,数据库平台迁移(如MySQL迁移到DB2)和分库分表时,会省去很多麻烦

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!