数据库逻辑设计之 三大范式 及 反范式化 优缺点
一、第一范式
原子性:要求属性具有原子性,不可再分解;
如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是;
二、第二范式
惟一性:要求记录有惟一标识,即实体的惟一性,即不存在部分依赖
表:学号、课程号、姓名、学分;
这个表明显说明了两个事务:学生信息, 课程信息;由于非主键字段必须依赖主键,这里学分依赖课程号,姓名依赖与学号,所以不符合二范式。
可能会存在问题:
- 数据冗余:,每条记录都含有相同信息;
- 删除异常:删除所有学生成绩,就把课程信息全删除了;
- 插入异常:学生未选课,无法记录进数据库;
更新异常:调整课程学分,所有行都调整。
正确做法:
学生:Student(学号, 姓名);
课程:Course(课程号, 学分);
选课关系:StudentCourse(学号, 课程号, 成绩)。
三、第三范式
冗余性:要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;
表: 学号, 姓名, 年龄, 学院名称, 学院电话
因为存在依赖传递: (学号) → (学生)→(所在学院) → (学院电话) 。
可能会存在问题:
- 数据冗余:有重复值;
- 更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况 。
正确做法:
学生:(学号, 姓名, 年龄, 所在学院);
学院:(学院, 电话)。
四、反范式化
没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余,达到以空间换时间的目的。
五、范式化设计和反范式化设计的优缺点
范式化
优点:
1· 可以尽量的减少数据冗余
2·数据表更新快体积小
3·范式化的更新操作比反范式化更快
4·范式化的表通常比反范式化更小
缺点:
1·对于查询需要对多个表进行关联,导致性能降低
2·更难进行索引优化
反范式化
优点:
1·可以减少表的关联
2·可以更好地进行索引优化
缺点
1·存在数据冗余及数据维护异常
2·对数据的修改需要更多成本
数据库逻辑设计之 三大范式 及 反范式化 优缺点相关推荐
- 数据库逻辑设计之三大范式,一看就懂
数据库逻辑设计之三大范式 第一范式 第二范式 第三范式 反范式化 范式化设计和反范式化设计的优缺点 范式化 反范式化 第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解: 表:字段1. ...
- 数据库逻辑设计之三大范式通俗理解
一.第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解: 表:字段1. 字段2(字段2.1.字段2.2).字段3 ...... 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还 ...
- mysql三大范式 答案_数据库逻辑设计之三大范式通俗理解,一看就懂,书上说的太晦涩...
一.第一范式 1NF是对属性的原子性,要求属性具有原子性,不可再分解:表:字段1. 字段2(字段2.1.字段2.2).字段3 ...... 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可 ...
- mysql增删改查不区分大小写吗_MySQL的增删改查语句以及数据库设计的三大范式...
数据库设计的三大范式: 1.列的原子性,即列是不可再分的 2.表里的每一列都应该与主键有关系, 3.表里的每一列都应该与主键有直接关系, 当使用自增长列不满足2.3范式,是特殊例子,只用在解决较为复杂 ...
- 数据库设计的三范式和反范式
数据库设计的三范式和反范式 范式的概念 三范式 范式一 范式二 范式三 反范式 总结 范式的概念 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式 ...
- 数据库逻辑设计 完全函数依赖、部分函数依赖、传递函数依赖、码、候选码、主码、范式
数据库逻辑设计 R:关系名 U:组成该关系的属性名集合 D∶属性组U中属性所来自的域 DOM:属性 到域的映射 F:属性组U上的一组数据依赖 由于D.DOM对模式设计的关系不大,这里把关系模式简化为一 ...
- 数据库建立遵循的三大范式
数据库建立遵循的三大范式 数据库设计深刻影响着存储性能和数据的操作效率,为了避免操作异常,在设计数据库的时候需要满足一定的规范要求,这里就引入了范式. 范式有多种级别:第一范式,第二范式,第三范式,b ...
- 5、数据库设计的三大范式
为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中,这种规则就是范式.范式是符合某一种级别的关系模式的集合.关系型数据库中的关系必须满足一定的要求,即满足不同的范式. ...
- mysql三大范式和反范式_数据库范式:三大范式、BC范式和反范式化
一.什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范.为了让各个属性间的关系更加合理,减少数据冗余. 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的约 ...
最新文章
- [翻译]XNA外文博客文章精选之sixteen(中)
- 牛客 - 第k小数(线性寻找第 k 小数)
- 电脑pin重置_如果忘记了如何重置Windows PIN
- 我参与的一个项目的继续总结:技术篇
- JavaScript之Ajax-1 Ajax(Ajax原理、Ajax对象属性和方法)
- java编程思想.pdf,阿里开发手册.pdf,MySQL是怎样运行的_掘金小册_.pdf
- 浪潮之巅: 中国企业高管硅谷交流会
- scrum敏捷开发流程介绍和心得
- RK3399外设驱动之MIPI
- 精益产品开发体系最佳实践及原则
- 脱机使用打印机怎么删除缓存_如何在Windows中使用脱机文件来脱机缓存网络文件...
- android keep class,Android混淆快速配置之@Keep
- qt webview 忽略 ssl错误 ignoreSslErrors
- java 二嗨租车项目_Java第二季租车系统参考
- eclipse 取消xml校验
- 最受HR欢迎的简历五大特征
- “旁观者”给阿里未来发展“把的脉”
- android系统底层的updater 命令,Android ROM 刷机脚本 updater-script 的基本流程和初级语句...
- 25匹马赛跑确定前五匹马的问题
- SSH原理与运用:远程登录
热门文章
- Egret QQ玩一玩适配【踩坑日记】
- 世纪互联数据中心有限公司
- torch.roll() 用法解读
- python项目的QQ机器人使用及部署在腾讯云服务器
- 美国大学生数学建模竞赛选题、经验以及准备材料
- 上顿号符号_标点符号的用法一一顿号
- 《罗一笑,你给我站住》被指为P2P公司炒作
- 站住,别动O(∩_∩)O~
- ECDH and ECDSA(ECC椭圆曲线算法3)
- 解决MySQL的Unknown system variable ‘tx_isolation‘