数据库三大范式详解,部分依赖、完全依赖、传递依赖
数据库三大范式详解以及部分、完全、传递依赖
- 一、第一范式
- 二、第二范式
- 三、第三范式
- 四、部分依赖、完全依赖、传递依赖
- 完结撒花
一、第一范式
数据库每一列都是不可分的基本数据项(原子数据项)
就比如说:下面一个数据表
编号 | 姓名 | 地址 |
---|---|---|
001 | 李一 | 山东,青岛 |
002 | 李二 | 山东,济南 |
003 | 李三 | 山东,济宁 |
上表所示的地址,就不符合第一范式,以为地址那一列可以分为省份和市区,故可以修改为
编号 | 姓名 | 省份 | 市区 |
---|---|---|---|
001 | 李一 | 山东 | 青岛 |
002 | 李二 | 山东 | 济南 |
003 | 李三 | 山东 | 济宁 |
二、第二范式
第二范式要求在满足第一范式的基础上,非码属性必须完全依赖于候选字,也就是要消除部分依赖。(完全依赖,部分依赖在后文)
就比如说:
订单号 | 产品号 | 产品数量 | 产品价格 | 订单时间 | 订单金额 |
---|---|---|---|---|---|
2001 | 001 | 3 | 8.5 | 20200224 | 25.5 |
2002 | 002 | 2 | 7.5 | 20200424 | 17 |
2002 | 003 | 2 | 6.5 | 20200424 | 17 |
2003 | 001 | 2 | 8.5 | 20200324 | 16 |
如上图加粗字体所示,可能对于同一个订单,含有不同的产品,因此主键必须是产品号和订单号联合组成。但可以发现产品数量、产品价格与订单号、产品号都有关,不过订单时间与订单金额仅与订单号有关,这就违反了第二范式。故可以修改为:
订单号 | 产品号 | 产品数量 | 产品价格 |
---|---|---|---|
2001 | 001 | 3 | 8.5 |
2002 | 002 | 2 | 7.5 |
2002 | 003 | 2 | 6.5 |
2003 | 001 | 2 | 8.5 |
订单号 | 订单时间 | 订单金额 |
---|---|---|
2001 | 20200224 | 25.5 |
2002 | 20200424 | 17 |
2002 | 20200424 | 17 |
2003 | 20200324 | 16 |
三、第三范式
第三范式要求在满足第二范式的基础上,任何非主属性不依赖于其他非主属性,即在第二范式的基础上消除传递依赖。第三范式要求数据表的每一列都与主键直接相关,而不是间接相关。
就比如说:
学号 | 姓名 | 性别 | 班主任姓名 | 班主任性别 | 班主任年龄 |
---|---|---|---|---|---|
2001 | 李一 | 男 | 陈毅 | 男 | 35 |
2003 | 李二 | 男 | 陈毅 | 男 | 35 |
2004 | 李三 | 男 | 王玉 | 女 | 26 |
2005 | 李四 | 男 | 王玉 | 女 | 26 |
从上表可以看出,所有属性都完全依赖于学号,故符合第三范式,但是班主任性别和班主任年龄直接依赖于班主任姓名,而不是主键学号,故不符合第三范式。可修改为:
学号 | 姓名 | 性别 | 班主任姓名 |
---|---|---|---|
2001 | 李一 | 男 | 陈毅 |
2003 | 李二 | 男 | 陈毅 |
2004 | 李三 | 男 | 王玉 |
2005 | 李四 | 男 | 王玉 |
班主任姓名 | 班主任性别 | 班主任年龄 |
---|---|---|
陈毅 | 男 | 35 |
陈毅 | 男 | 35 |
王玉 | 女 | 26 |
王玉 | 女 | 26 |
这样就满足第三范式了。
四、部分依赖、完全依赖、传递依赖
部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
比如说:C可以通过AB得到,并且C也可以仅通过A得到,仅通过B得到,
那么就说C部分依赖AB。
完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
比如说:C可以通过AB得到,并且C不可以仅通过A得到,也不可以仅通过B得到,
那么就说C完全依赖AB。
传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
比如说:B可以通过A得到,C可以通过B得到,那么就称C传递依赖A。
完结撒花
biu 点个赞再走呗
数据库三大范式详解,部分依赖、完全依赖、传递依赖相关推荐
- 数据库三大范式详解实例图文教程
title: 数据库三大范式详解实例图文教程 date: 2021-09-04 20:29:31 tags: 数据库 MySQL categories: 数据库 cover: https://cove ...
- 数据库三范式详解,优缺点,解决了什么问题?
https://zhuanlan.zhihu.com/p/20028672 三范式详解 解决了什么问题:(上面也有讲到)https://blog.csdn.net/qq_41174684/articl ...
- 数据库的三大范式详解
数据库的三大范式 第一范式(1NF) 原子性:保证每一列不可再分 举例: 在上面的表中,family_inf列中不满足原子性的要求,故不满足第一范式.需调整如下: 第二范式(2NF) 在第一范式的基础 ...
- MySQL三大范式详解(小白也能懂哦)
1.范式基础 1.1范式的概念 设计数据库的时候需要遵从的一些规范,目前关系数据库有六种范式:第一范式(1NF).第二范式(2NF).第三范式(3NF).巴斯-科德范式(BCNF).第四范式(4NF) ...
- 数据库六种范式详解(1NF/2NF/3NF/BCNF/4NF/5NF)
目录 数据库的基本概念 函数依赖 函数依赖的定义 函数依赖与属性的关系 六种范式 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) 巴斯-科德范式(BCNF,Boyce-Codd Norma ...
- 数据库三范式详解+例子
转载 <a href="http://blog.csdn.net/w__yi/article/details/19934319"></a> 数据库的设计范式 ...
- mysql数据库设计三大范式_数据库设计三大范式详解
引言数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不 ...
- 数据库设计三大范式详解
引言数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不 ...
- mysql三大范式 答案_数据库三大范式定义与理解
数据库三大范式定义与理解 发布时间:2018-06-04 10:24, 浏览次数:291 一.第一范式(1NF) 要求: 要求:每一个分量必须是不可分的数据项. 特点: 1)有主键,且主键不能为空. ...
最新文章
- ajax invoke error,配置全局的异常捕获时,走ajax请求下面报错
- 换根dp求树所有节点的最小深度
- C++程序设计语言编程风格演变史
- Game(HDU-6669)
- select count(*) 和 select count(1) 以及 select count(column) 的区别
- We7 从这里开始---we7的功能和特点(3)
- Excel选择某单元格整行变色是这样做的
- Linux DMA 内dwc_prep_slave_sg函数与device_prep_dma_cyclic函数
- 全球链界科技发展大会_科技界的女性-过去,现在和未来
- 本地域名转向Hosts文件位置
- Win10上如何显示本地lrc文件歌词——lrc播放器——《超级lrc播放器》
- 现在可用:Yggdrasil图标包
- JDBDUitl代码记录
- Openvpn搭建并使用用户名密码登录
- 华为p40还用麒麟990鸿蒙,华为P40渲染图曝光,2K挖孔屏+麒麟990+鸿蒙OS
- 网页上显示word和Excel
- 光学实验-偏振光的研究(matploylib)
- 第20讲:Mybatis 中 XML 文件是如何解析的?
- net_framework 种子
- 摘录:Linux打Patch的方法