反规范化设计

本文探讨了反规范化设计在数据库设计中的应用,强调其优点如减少连接次数、提高查询效率,同时也指出其缺点如数据重复和维护复杂性。介绍了通过冗余列、派生列、重新组表和分割表(包括水平和垂直)来实现反规范化的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.反规范化设计的前提

反规范化设计是规范化设计之后的步骤,首先令所有关系满足规范化设计(一般到3NF),之后的反规范化设计才能是可控的。

2.反规范化设计的优点

能够减少数据库查询时SQL的连接次数,从而减少磁盘IO,提高查询效率。

3.反规范化设计的缺点

反规范化设计会带来数据的重复存储,浪费了额外的磁盘空间,并且由于多处存储,增加了数据维护的复杂性。

4.反规范化设计的方法

(1)增加冗余列:增加冗余列是指在多个表中具有相同的列,它常用来在查询时避免连接操作。

(2)增加派生列:增加派生列指增加的列可以通过表中其他数据计算生成。它的作用是在查询时减少计算量,从而加快查询速度。

(3)重新组表:重新组表指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

(4)分割表:有时对表做分割可以提高性能。

5.分割表的方法分类

5.1 水平分割

建立多个列定义相同的表,将一个表中的数据行分别保存在多个表中。水平分割可以降低单表索引的层数和大小。水平分割应用的几种情况:

  •         表记录数很多
  •         表中的数据具有独立性,比如数据可明显按所属地区、年度等属性进行划分
  •         表内容需要存储在多个介质上

5.2 垂直分割

把一个表的列定义拆分到多个表中,并且具有相同的主键列。比如一个表中列数太多,并且某些列数据常用,而某些列数据不常用,就可以进行垂直分割。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值