码迷,mamicode.com
首页 > 数据库 > 详细

数据库三范式

时间:2019-05-20 19:29:51      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:索引   空间换时间   保留   记录   关系型数据库   要求   分解   多个   性能   

关系型数据库设计需遵循三范式

  1. 原子性:对属性的原子性,要求属性具有原子性,不可再分解
  2. 唯一性:对记录的唯一性,要求每一条记录有唯一标识
  3. 冗余性:对字段的冗余性,要求任何字段不能由其他字段派生出来,字段没有冗余,不存在传递依赖。

 

一般说来,数据库只需满足第三范式(3NF)就行了。

 

没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余,达到以空间换时间的目的

 

〖例〗:有一张存放商品的基本表,如表1所示。“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。

 

Rose 2002中,规定列有两种类型:数据列计算列。“金额”这样的列被称为“计算列”,而“单价”和“数量”这样的列被称为“数据列”。

 

五、范式化设计和反范式化设计的优缺点

5.1 范式化

优点:

  • 尽量减少数据冗余
  • 范式化数据表比反范式化数据表更新速度快
  • 范式化数据表体积小

 (范式化是以时间换空间)

缺点:

  • 查询多个表需要关联,导致性能降低
  • 更难进行索引优化

5.2 反范式化

优点:

  • 可以减少表的关联
  • 更好的进行索引优化

缺点:

  •  存在数据冗余及数据异常
  • 对数据修改需要更多的时间成本

 

数据库三范式

标签:索引   空间换时间   保留   记录   关系型数据库   要求   分解   多个   性能   

原文地址:https://www.cnblogs.com/chaojiyingxiong/p/10895653.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!