一、第一范式

原子性:要求属性具有原子性,不可再分解;

如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是;

二、第二范式

惟一性:要求记录有惟一标识,即实体的惟一性,即不存在部分依赖

表:学号、课程号、姓名、学分;
这个表明显说明了两个事务:学生信息, 课程信息;由于非主键字段必须依赖主键,这里学分依赖课程号,姓名依赖与学号,所以不符合二范式。

可能会存在问题:

  • 数据冗余:,每条记录都含有相同信息;
  • 删除异常:删除所有学生成绩,就把课程信息全删除了;
  • 插入异常:学生未选课,无法记录进数据库;
  • 更新异常:调整课程学分,所有行都调整。

    正确做法:
    学生:Student(学号, 姓名);
    课程:Course(课程号, 学分);
    选课关系:StudentCourse(学号, 课程号, 成绩)。

三、第三范式

冗余性:要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;
表: 学号, 姓名, 年龄, 学院名称, 学院电话
因为存在依赖传递: (学号) → (学生)→(所在学院) → (学院电话) 。

可能会存在问题:

  • 数据冗余:有重复值;
  • 更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况 。

正确做法

学生:(学号, 姓名, 年龄, 所在学院);

学院:(学院, 电话)。

四、反范式化

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

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

范式化


优点
1· 可以尽量的减少数据冗余
2·数据表更新快体积小
3·范式化的更新操作比反范式化更快
4·范式化的表通常比反范式化更小


缺点
1·对于查询需要对多个表进行关联,导致性能降低
2·更难进行索引优化


反范式化


优点
1·可以减少表的关联
2·可以更好地进行索引优化


缺点
1·存在数据冗余及数据维护异常
2·对数据的修改需要更多成本

数据库逻辑设计之 三大范式 及 反范式化 优缺点相关推荐

  1. 数据库逻辑设计之三大范式,一看就懂

    数据库逻辑设计之三大范式 第一范式 第二范式 第三范式 反范式化 范式化设计和反范式化设计的优缺点 范式化 反范式化 第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解: 表:字段1. ...

  2. 数据库逻辑设计之三大范式通俗理解

    一.第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解: 表:字段1. 字段2(字段2.1.字段2.2).字段3 ...... 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还 ...

  3. mysql三大范式 答案_数据库逻辑设计之三大范式通俗理解,一看就懂,书上说的太晦涩...

    一.第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解:表:字段1. 字段2(字段2.1.字段2.2).字段3 ...... 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可 ...

  4. mysql增删改查不区分大小写吗_MySQL的增删改查语句以及数据库设计的三大范式...

    数据库设计的三大范式: 1.列的原子性,即列是不可再分的 2.表里的每一列都应该与主键有关系, 3.表里的每一列都应该与主键有直接关系, 当使用自增长列不满足2.3范式,是特殊例子,只用在解决较为复杂 ...

  5. 数据库设计的三范式和反范式

    数据库设计的三范式和反范式 范式的概念 三范式 范式一 范式二 范式三 反范式 总结 范式的概念 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式 ...

  6. 数据库逻辑设计 完全函数依赖、部分函数依赖、传递函数依赖、码、候选码、主码、范式

    数据库逻辑设计 R:关系名 U:组成该关系的属性名集合 D∶属性组U中属性所来自的域 DOM:属性 到域的映射 F:属性组U上的一组数据依赖 由于D.DOM对模式设计的关系不大,这里把关系模式简化为一 ...

  7. 数据库建立遵循的三大范式

    数据库建立遵循的三大范式 数据库设计深刻影响着存储性能和数据的操作效率,为了避免操作异常,在设计数据库的时候需要满足一定的规范要求,这里就引入了范式. 范式有多种级别:第一范式,第二范式,第三范式,b ...

  8. 5、数据库设计的三大范式

    为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中,这种规则就是范式.范式是符合某一种级别的关系模式的集合.关系型数据库中的关系必须满足一定的要求,即满足不同的范式. ...

  9. mysql三大范式和反范式_数据库范式:三大范式、BC范式和反范式化

    一.什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范.为了让各个属性间的关系更加合理,减少数据冗余. 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约 ...

最新文章

  1. [翻译]XNA外文博客文章精选之sixteen(中)
  2. 牛客 - 第k小数(线性寻找第 k 小数)
  3. 电脑pin重置_如果忘记了如何重置Windows PIN
  4. 我参与的一个项目的继续总结:技术篇
  5. JavaScript之Ajax-1 Ajax(Ajax原理、Ajax对象属性和方法)
  6. java编程思想.pdf,阿里开发手册.pdf,MySQL是怎样运行的_掘金小册_.pdf
  7. 浪潮之巅: 中国企业高管硅谷交流会
  8. scrum敏捷开发流程介绍和心得
  9. RK3399外设驱动之MIPI
  10. 精益产品开发体系最佳实践及原则
  11. 脱机使用打印机怎么删除缓存_如何在Windows中使用脱机文件来脱机缓存网络文件...
  12. android keep class,Android混淆快速配置之@Keep
  13. qt webview 忽略 ssl错误 ignoreSslErrors
  14. java 二嗨租车项目_Java第二季租车系统参考
  15. eclipse 取消xml校验
  16. 最受HR欢迎的简历五大特征
  17. “旁观者”给阿里未来发展“把的脉”
  18. android系统底层的updater 命令,Android ROM 刷机脚本 updater-script 的基本流程和初级语句...
  19. 25匹马赛跑确定前五匹马的问题
  20. SSH原理与运用:远程登录

热门文章

  1. Egret QQ玩一玩适配【踩坑日记】
  2. 世纪互联数据中心有限公司
  3. torch.roll() 用法解读
  4. python项目的QQ机器人使用及部署在腾讯云服务器
  5. 美国大学生数学建模竞赛选题、经验以及准备材料
  6. 上顿号符号_标点符号的用法一一顿号
  7. 《罗一笑,你给我站住》被指为P2P公司炒作
  8. 站住,别动O(∩_∩)O~
  9. ECDH and ECDSA(ECC椭圆曲线算法3)
  10. 解决MySQL的Unknown system variable ‘tx_isolation‘