1、第一范式:1NF(First Normal Form)
取消表中套表的现象。以下表中套表,不符合1NF,不符合关系数据库。

name

tel

age

大宝

13612345678

22

小明

13988776655

010-1234567

21

修改为( name,tel,age)和(tel,cellphone,fix_phone)
2、第二范式:2NF(Second Normal Form)
简单的说,第二范式就是在符合1NF的基础上, 非主属性(non-primary attribute)完全函数依赖(full functional dependency)于 主属性(primary attribute)。适用于那些个联合主键的表。
例如

学生

课程

老师

老师职称

教材

教室

上课时间

小明

一年级语文(上)

大宝

副教授

《小学语文1》

101

14:30

一个学生上一门课,一定在特定某个教室。所以有(学生,课程)->教室

一个学生上一门课,一定是特定某个老师教。所以有(学生,课程)->老师

一个学生上一门课,他老师的职称可以确定。所以有(学生,课程)->老师职称

一个学生上一门课,一定是特定某个教材。所以有(学生,课程)->教材

一个学生上一门课,一定在特定时间。所以有(学生,课程)->上课时间

因此(学生,课程)是一个码。

然而,一个课程,一定指定了某个教材,一年级语文肯定用的是《小学语文1》,那么就有课程->教材。(学生,课程)是个码,课程却决定了教材,这就叫做不完全依赖(partial functional dependency),或者说部分依赖。出现这样的情况,就不满足第二范式!

这样会导致插入,删除,修改等的异常。

(1)  校长要新增加一门课程叫“微积分”,教材是《大学数学》,怎么办?学生还没选课,而学生又是主属性,主属性不能空,课程怎么记录呢,教材记到哪呢? ……郁闷了吧?(插入异常)

(2)下学期没学生学一年级语文(上)了,学一年级语文(下)去了,那么表中将不存在一年级语文(上),也就没了《小学语文1》。这时候,校长问:一年级语文(上)用的什么教材啊?……郁闷了吧?(删除异常)

(3)校长说:一年级语文(上)换教材,换成《大学语文》。有10000个学生选了这么课,改动好大啊!改累死了……郁闷了吧?(修改异常)

因此修改为

学生,课程,老师,老师职称,教室,上课时间)和(课程,教材)

 3、第三范式:3NF(Third Normal Form)

在符合2NF的基础上,消除传递函数依赖(transitive dependency)。什么是传递函数依赖呢:如果(A,B,C),其中A为主键,B,C为非主属性,如果存在A->B->C,则称为传递函数依赖。[C传递依赖于A,且C为非主属性。如果要求C也可以为主属性,那么,是BCNF]

如上例,(学生,课程,老师,老师职称,教室,上课时间)和(课程,教材)已经能够符合2NF,但是

一个老师确定唯一的老师职称,即存在(学生,课程)->(老师)->(老师职称)的传递函数依赖关系。

会产生如下问题:

(1)老师升级了,变教授了,要改数据库,表中有N条,改了N次……(修改异常)

(2) 没人选这个老师的课了,老师的职称也没了记录……(删除异常)

(3)新来一个老师,还没分配教什么课,他的职称记到哪?……(插入异常)

因此修改为:

学生,课程,老师,教室,上课时间)和(课程,教材)和(老师,老师职称)

3、BC范式:BCNF(Boyce-Codd Normal Form)

符合3NF基础上,并且,主属性不依赖于主属性。也可以表述如下:

若关系模式属于第一范式,且每个属性(主属性和非主属性)都不传递依赖于键码,则R属于BC范式。

以上两者等价。BC范式既检查非主属性,又检查主属性。当只检查非主属性时,就成了第三范式。满足BC范式的关系都必然满足第三范式。

4、各种范式间的关系可以用下图来总结

数据库范式(normalization)相关推荐

  1. 数据库范式5nf_第四范式(4NF)| 数据库管理系统

    数据库范式5nf Fourth normal form (4NF) is a normal form used in database normalization, in which there ar ...

  2. oracle 第一范式,数据库范式之第一范式

    数据库范式(Database Normalization) 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余 ...

  3. 数据库范式4nf什么意思_什么是第一范式(1NF)?

    数据库范式4nf什么意思 In this tutorial we will learn about the 1st(First) Normal Form which is more like the ...

  4. 数据库规范化,数据库范式,和规范化实例

    文章目录 什么是数据库规范化 术语 数据库的3个范式介绍 第一范式 第二范式 第三范式 根据数据库范式优化数据库结构 满足第一范式 满足第二范式 满足第三范式 参考链接 什么是数据库规范化 维基百科的 ...

  5. 什么是数据库范式(NF)?从一范式到五范式分别是什么?

    什么是数据库范式(NF)?从一范式到五范式分别是什么? 什么是数据库范式(NF)? 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某 ...

  6. 数据库范式解析(1NF 2NF 3NF BCNF)

    数据库设计范式是关系型数据库的设计准则.其目的在于通过规划设计使得数据库结构合理,尽量减少数据冗余,消除存储异常,方便数据的插入.更新和删除操作.目前常用范式包括1NF(第一范式).2NF(第二范式) ...

  7. 【转载】数据库范式那些事

    数据库范式那些事 简介 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一 ...

  8. 数据库范式的思考以及数据库的设计

    数据库范式--通俗易懂[转] 数据库范式是数据库设计中必不可少的知识,没有对范式的理解,就无法设计出高效率.优雅的数据库.甚至设计出错误的数据库.而想要理解并掌握范式却并不是那 么容易.教科书中一般以 ...

  9. 从第一范式(2nf)到第二范式(3nf)_啥是数据库范式

    前言: 关于数据库范式,时常有听说过,一直没有详细去了解.一般数据库书籍或数据库课程会介绍范式相关内容,范式也经常出现在数据库考试题目中.不清楚你是否对范式有比较清晰的了解呢?本篇文章我们一起来学习下 ...

  10. 数据库范式 1NF, 2NF, 3NF的问题与细解

    转自https://www.jianshu.com/p/94a274ef35a9 一. 关于数据冗余与异常 数据库的规范化 数据库规范化是一种在数据库中组织数据的技术. 规范化是消除冗余(重复)和不良 ...

最新文章

  1. 修改表格字体颜色_CAD表格文字样式失灵?不,你错了
  2. 80%开发者都不知道的以太坊骚操作:「事件」和「日志」还可以这么玩!
  3. 被3整除的子序列(简单dp)
  4. android辅助功能实现群发,Android 8.0实现发送通知的方法
  5. c语言直流电机控制实验报告,直流电机实验报告.docx
  6. oem 无法访问问题解决过程
  7. 【分块】bzoj2120 数颜色
  8. linux下测试权限,linux 文件权限
  9. 使用K近邻对iris数据集进行分类
  10. 计算机电源指示灯,为什么笔记本电脑电源指示灯一直闪?
  11. shiro整合ehcache Cannot resolve reference to bean 'securityManager' while setting bean property 'secur
  12. 历届试题 填字母游戏
  13. DDOS攻击与防御(一)
  14. python 批量下载种子_批量下载btbbt种子
  15. HuskyLens人工智能摄像头
  16. K12教育小初高各个版本教材内的章节数据
  17. 国庆过了,该审视下自己的生活了
  18. 如何提升企业网络曝光率?
  19. 开源协议MIT、BSD、Apache
  20. 因果信号的傅里叶变换_信号与系统实验报告3实验3 傅里叶变换及其性质

热门文章

  1. 人工智能开启数字化新征程,智能语音全速向前
  2. [转载]使用兼容ie6 ie7 ie8 FF的text-overflow:ellips
  3. 【英语考研词汇训练营】Day 17 —— espresso,ultimate,gradually,detect,dimension
  4. nodeJs + webpack+vue+ element ui 环境安装
  5. 微商代理系统APP软件
  6. 6把椅子换位思考法则
  7. 顶点计划换位思考汇总
  8. 推荐一个超简约、干净又实用的导航网站,支持自定义,重新认识一下你的浏览器起始页吧
  9. Matlab 归一化函数premnmx [-1,1]
  10. 20ZR暑期集训 简单数据结构