数据库的范式

概念:设计数据库是,需要遵循的一些规范,要遵循后边的范式要求,必须遵循前边的所有范式要求

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

目前关系型数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、BC范式、第四范式(4NF)、第五范式(5NF)。

分类:

第一范式:每一列都是不可分割的原子数据项

第二范式:在第一范式基础上,非码属性必须完全依赖于候选码(在第一范式基础上消除非主属性对主码的部分依赖)

几个概念:

  1. 函数依赖:A-->B,如果通过A属性(属性组)的值,可以确定唯一B属性的值。则B依赖于A

例如:学号-->姓名      (学号,课程名称) --> 分数

  1. 完全函数依赖:A->B  如果A是一个属性组,则B属性值得确定需要依赖于A属性组中的所有的属性值。

例如:(学号,课程名称) --> 分数

  1. 部分函数依赖:A --> B,如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。

例如:(学号,课程名称) --> 姓名

  1. 传递函数依赖:A --> B,B --> C ,如果A属性(属性组)的值,可以唯一确定B属性的值,在通过B属性(属性组)的值可以唯一确定C属性的值,则称C传递函数依赖于A

例如:学号 --> 系别,系别-->系主任

  1. 码:如果在一张表中,一个属性或属性组,被其他所有属性完全依赖,则称这个属性(属性组)为该表的码。

例如:该表中码为:(学号,课程名称)

主属性:码属性组中的所有属性

非主属性:除码属性组的属性

第三范式:在第二范式基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

学号

姓名

课程名称

分数

系名

系主任

10010

张无忌

经济系

张三丰

高等数学

95

10010

张无忌

经济系

张三丰

英语

93

10010

张无忌

经济系

张三丰

计算机基础

97

10011

令狐冲

法律系

任我行

线性代数

88

10011

令狐冲

法律系

任我行

刑法

87

10012

杨过

艺术系

小龙女

家庭法

88

10012

杨过

艺术系

小龙女

唱歌

99

表一

不满足第一范式

学号

姓名

系名

系主任

课程名称

分数

10010

张无忌

经济系

张三丰

高等数学

95

10010

张无忌

经济系

张三丰

英语

93

10010

张无忌

经济系

张三丰

计算机基础

97

10011

令狐冲

法律系

任我行

线性代数

88

10011

令狐冲

法律系

任我行

刑法

87

10012

杨过

艺术系

小龙女

家庭法

88

10012

杨过

艺术系

小龙女

唱歌

99

表二

第一范式

存在的问题:

  1. 数据有大量冗余(重复)
  2. 数据添加存在问题,添加新开设的系和系主任时,数据不合法
  3. 数据存在问题:张无忌同学毕业了,删除数据,会将系的数据一起删除

选课表

学号

课程名称

分数

10010

高等数学

95

10010

英语

93

10011

计算机基础

97

10011

线性代数

88

10012

刑法

87

10012

高等数学

88

学生表

学号

姓名

系名

系主任

10010

张无忌

经济系

张三丰

10011

令狐冲

法律系

任我行

10012

杨过

艺术系

小龙女

第二范式

存在问题:

1、数据添加存在问题,添加新开设的系和系主任时,数据不合法

2、数据存在问题:张无忌同学毕业了,删除数据,会将系的数据一起删除

选课表

学号

课程名称

分数

10010

高等数学

95

10010

英语

93

10011

计算机基础

97

10011

线性代数

88

10012

刑法

87

10012

高等数学

88

学生表

学号

姓名

10010

张无忌

10011

令狐冲

10012

杨过

系名

系主任

经济系

张三丰

法律系

任我行

艺术系

小龙女

第三范式

存在的所有问题都被解决了

第一范式、第二范式和第三范式相关推荐

  1. MySQL (4) 第一范式 第二范式 第三范式 BC范式

    第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不可再分的. 例如下图就不符合第一范式的要求 实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS) ...

  2. 3.6.2数据库系统-范式判断:范式分类、第一范式、第二范式、第三范式、BC范式

    3.6.2数据库系统-范式判断:范式分类.第一范式.第二范式.第三范式.BC范式 范式分类 第一范式 例题 第二范式 例题 第三范式 例题 BC范式 例题 范式分类 逐步优化以解决问题:插入异常.删除 ...

  3. 数据库|第一范式、第二范式、第三范式、BC范式、第四范式简单理解

    数据库|第一范式.第二范式.第三范式.BC范式.第四范式简单理解 在设计数据库的时候,虽说将我们要的数据正确完整导入数据库是很关键的,但是对于数据库的设计者来说,如何将大量数据合理有效正确地导入数据库 ...

  4. 数据库关系范式——第一范式、第二范式、第三范式、BC范式【通俗易懂,博主会讲人话】

    范式:是符合某一种级别的关系模式的集合. 说白了,就是对关系模式的一种规范化. 范式分为:第一范式.第二范式.第三范式.BC范式.第四范式.第五范式.后面两种在这里不讨论. 1.第一范式(1NF):关 ...

  5. mysql第一二三范式_第一范式、第二范式、第三范式

    第一范式.第二范式.第三范式 第一范式 如果一个关系模式R的所有属性都是不可分的基本数据项,则R1NF(即R符合第一范式). 两点: 一.每个字段都只能存放单一值 课程有两个值,不符合第一范式,可改为 ...

  6. 第一范式第二范式第三范式学习笔记

    三楚白云生佛手,九江寒月照禅心. --李日华<佛手岩> 文章目录 前言 一.第一范式(1NF) 二.第二范式(2NF) 三.第三范式(3NF) 四.参考学习视频 五.名词解释&知识 ...

  7. 数据库第一范式,第二范式,第三范式详解

    数据库第一范式,第二范式,第三范式详解 基础知识 实体:现实世界中客观存在并可以被区别的事物.比如"一个学生"."一本书"."一门课"等等. ...

  8. 第一范式、第二范式、第三范式、巴斯-科德范式、第四范式、主码、候选码、码详解

    目录 数据库逻辑设计 主码.候选码.码 第一范式 第二范式 第三范式 巴斯-科德范式 第四范式 数据库逻辑设计 前面我们讲了第二范式,我们知道还有第三范式,那么第三范式的特点到底是什么呢?下面我们来一 ...

  9. 数据库中的范式:第一范式,第二范式,第三范式

    元组:表中的一行 码:表中的一列 候选码:可唯一标识,如通过(身份证号码)或者 (学校,班级,学号)可唯一标识一个人:主属性:候选码中出现过的属性 主码 : 也叫主键,从候选码中选出一个老大 外码也叫 ...

  10. 第一范式 第二范式 第三范式 BC范式

    第一范式 第一范式:所有属性都是不可分割的原子值.  也就是每个属性都是不可再分的.  例如下图就不符合第一范式的要求   实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RD ...

最新文章

  1. Windows PowerShell Cookbook
  2. java接口经常变动前端怎么办_Java进程故障排查(CPU资源占用高,接口响应超时,功能接口停滞等)...
  3. 【君义精讲】多种方法求斐波那契数列
  4. WampServer的配置
  5. Rabbitmq 1.消息如何保障 100%投递成功?
  6. Postman 报错SSL Error: Self signed certificate Disable SSL Verification
  7. USACO Section2.1 Hamming Codes 解题报告 【icedream61】
  8. QPSK调制解调原理(IQ调制)
  9. 【高电复习3】频谱的线性搬移、振幅调制、解调、混频
  10. 第十二章 国民收入的决定:AD-AS模型
  11. CSS Sprite
  12. 几张“有趣”的简图带你理解面试题:String、StringBuffer、StringBuilder区别
  13. 【Tableau Desktop 企业日常技巧16】Tableau下载和安装ODBC驱动 连接MySQL方法及过程详解
  14. Perl年满30岁,其社区继续蓬勃发展
  15. 深度学习之目标检测(九)--YOLOv3 SPP理论介绍
  16. ERROR:Xst:899
  17. 【STM32F429的DSP教程】第12章 DSP基础函数-相反数,偏移,移位,减法和比例因子
  18. Mp4文件缓冲问题解决方案
  19. android支付宝应用管理,Android应用拉起支付宝
  20. inner_product

热门文章

  1. 2023-2028年中国合成氨行业发展前景与投资规划分析报告
  2. 《java并发编程实战》- 关于this引用溢出
  3. 《Java并发编程实战》思维导图
  4. git导出代码的方法~archive
  5. ‘svn更新‘ 报错:has encountered a problem. org.tigris.subversion.javahl.ClientException
  6. hive安装过程中报错处理办法
  7. php 去除中英文空格,php去除字符串首尾中英文空格程序
  8. RTX操作系统教程[00]
  9. 学习使用USB-TTL驱动PN532来读写IC卡
  10. 使用SQL语句查询学生数据库中学生信息 —14条基本查询语句