文章目录
-
- 对冗余的控制(反范式模式)
-
- 数据库三范式:
- 反规范化的坏处
- 考虑冗余
- 打破范式的7种常见方式
-
- 1. Combine 1:1 relationships 合并1-1关系
- 2. Duplicating(重复) nonkey columns in 1:* relationships to reduce joins 为了减少连接操作,在1-多关系中间复制非关键字属性
- 3. Duplicating FK columns in 1:* relationships to reduce joins 为了减少连接操作,在1-多关系中间复制外部关键字
- 4. Duplicating columns in \*:* relationships to reduce joins 为了减少连接操作,在多-多关系中间复制属性
- 5. Introducing repeating groups 引入重复数据
- 6. Creating extract tables 合并基本表和查找表,创建提取表
- 7. Partitioning tables 分区,分割物理表(第五章讲过了)
对冗余的控制(反范式模式)
数据库三范式:
- 一范式:一个字段只有一个值
- 二范式:一条记录可以被唯一的字段的组合所区分(一个实体有唯一的标识),是对于实体完整性的要求
- 三范式:字段和字段之间不存在函数依赖。两个字段之间不能够进行函数推导。比如有两个字段,一个字段是身份证号,一个字段是出生日期;前者可以推导出后者,所以最好不应该同时存在。
反规范化的坏处
- 会使得实现变得更加复杂,因为需要手动保持数据完整性
- 会降低数据的灵活性
- 会加速元组检索的速度,但是一定会减慢更新的速度。
- 如果系统具有低修改率和高查询率,那么规范弱化是一种可行的选择。
- 如果根据某种规则打破范式,那么需要根据相应的解决方案来手动保证打破范式之后的数据完整性。
- 反规范化需要先根据三范式设计出数据表,然后在设计出的表上进行反规范化
- 可以通过ER实体关系模型先设计出表,然后构建出满足三范式的表
考虑冗余
- 放弃完全规范化,得到某些性能上的好处。最好只在系统不满足其性能要求的时候才考虑打破范式。