一、第一范式

1NF是对属性的原子性,要求属性具有原子性,不可再分解;

表:字段1、 字段2(字段2.1、字段2.2)、字段3 ......

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

二、第二范式

2NF是对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖;

表:学号、课程号、姓名、学分;

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

可能会存在问题:

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

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

三、第三范式

3NF是对字段的冗余性,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;

表: 学号, 姓名, 年龄, 学院名称, 学院电话

因为存在依赖传递: (学号) → (学生)→(所在学院) → (学院电话) 。

可能会存在问题:

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

正确做法:

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

学院:(学院, 电话)。

四、反范式化

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

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

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

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

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

5.1 范式化

优点:

缺点:

5.2 反范式化

优点:

缺点:

参考资料如下:

1、通俗地理解数据库三个范式
2、数据库模型设计,第一范式、第二范式、第三范式简单例子理解
3、数据库三大范式最简单的解释

数据库逻辑设计之三大范式通俗理解相关推荐

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

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

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

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

  3. 数据库逻辑设计之 三大范式 及 反范式化 优缺点

    一.第一范式 原子性:要求属性具有原子性,不可再分解: 如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是: 二.第二范式 惟一 ...

  4. 数据库设计的三大范式通俗解释

    一.三大范式通俗解释: (1)简单归纳: 第一范式(1NF):字段不可分: 第二范式(2NF):有主键,非主键字段依赖主键: 第三范式(3NF):非主键字段不能相互依赖. (2)解释: 1NF:原子性 ...

  5. 数据库三大范式通俗理解

    官方的解释就不放了,想看的可以去百度! 通俗的理解: 第一范式就是属性不可分割,每个字段都应该是不可再拆分的. 比如一个字段是姓名(NAME),在国内的话通常理解都是姓名是一个不可再拆分的单位,这时候 ...

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

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

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

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

  8. 数据库三大范式通俗解析

    三大范式 一.三大范式通俗解释: 二.详解 一.三大范式通俗解释: (1)简单归纳: 第一范式(1NF):字段不可分: 第二范式(2NF):有主键,非主键字段依赖主键: 第三范式(3NF):非主键字段 ...

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

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

最新文章

  1. AVR开发 Arduino方法(附四) 参考文献与网址
  2. 优达学城《DeepLearning》大纲和学习愿景
  3. 把一个数组的值存入二叉树中,然后利用前序、中序、后序3种方式进行遍历(完整代码以及运行结果)(Java)
  4. python详细安装教程环境配置-python环境安装详细步骤
  5. 不使用 Ruby 的十个理由
  6. java发送内嵌图片邮件
  7. 对归并排序进行c语言编程实现,归并排序及C语言实现
  8. erp开发和java开发区别_Java程序员求职必学:Spring boot学习指南!
  9. SQL Server Management Studio 2016的新功能–快速启动
  10. java点击上传上传mysql并显示图片_java + mysql + jdbc实现图片上传
  11. centos6.2+heartbeat+mysql5.5+drbd84高可用安装
  12. Atitit 性能指标与性能提升的5个原则与性能提升模型
  13. 使用GHOST打包制作gho镜像文件
  14. SolidBuilder 2019 64位破解版+安装教程
  15. 最新版万能编辑器Visual Studio Code安装使用教程
  16. 基于javaSwing、MySQL的酒店客房管理系统(附源码)
  17. 【web框架】【zheng学习笔记(二)】【外网正式环境下部署(CentOS7.4)】
  18. mb是做1还是0_德国爱他美奶粉0-6月选择,给宝宝喝pre段还是1段奶粉?
  19. 电脑如何备份文件,怎么同步?
  20. 项目管理:确定目标有哪些作用?

热门文章

  1. DNA与剑桥的老鹰酒吧
  2. 2016 KCon 黑客大会兵器谱
  3. ZCMU-1411:喜闻乐见的a+b(大整数)
  4. ORA-03113 end-of-file on communication channel 问题解决
  5. ABAP 从CDS VIEW 发布OData Service示例
  6. 网管好助手--PSTOOLS
  7. 4-10 阶乘计算升级版
  8. 利用canvas把二维码和图片合成海报
  9. 【学习笔记VoxelMorph系列文章2】:《Unsupervised Learning for Fast Probabilistic Diffeomorphic Registration》
  10. 最好用的17个安全漏洞检查工具