第一范式,第二范式,第三范式,BCNF范式理解
基础知识
实体:现实世界中客观存在并可以被区别的事物。比如“一个学生”、“一本书”、“一门课”等等。值得强调的是这里所说的“事物”不仅仅是看得见摸得着的“东西”,它也可以是虚拟的,比如说“老师与学校的关系”。
属性:教科书上解释为:“实体所具有的某一特性”,由此可见,属性一开始是个逻辑概念,比如说,“性别”是“人”的一个属性。在关系数据库中,属性又是个物理概念,属性可以看作是“表的一列”。
元组:表中的一行就是一个元组。
分量:元组的某个属性值。在一个关系数据库中,它是一个操作原子,即关系数据库在做任何操作的时候,属性是“不可分的”。否则就不是关系数据库了。
码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。
全码:如果一个码包含了所有的属性,这个码就是全码。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
外码:一个属性(或属性组),它不是码,但是它别的表的码,它就是外码。
第一范式
第一范式列不能再分。
第二范式
第二范式建立在第一范式的基础上,非主属性完全依赖于码。
简单说:消除部分依赖。
(什么是码?) 表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。注意码可以包含多个属性。
要理解第二第三范式需要理解完全函数依赖、部分函数依赖、传递函数依赖。
完全函数依赖
定义:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
比如通过学号->姓名
部分函数依赖
定义:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
需要借用知乎刘慰教师的例子用一下,自己也理解了很长时间。
码用(学号+课程),为什么要加课程呢?因为不同课程成绩是通过学号查不出来的。
不过用(学号+课程)当作码是不是有些问题?
(学号+课程)->姓名,但是学号->姓名
(学号+课程)->系名,但是学号->系名
(学号+课程)->系主任,但是学号->系主任
这个就是部分依赖,说实话我看定义一脸懵逼。
要是上面那张表符合第二范式。需要将表拆分为两张表。
一张是 学号、课程、分数表
另外一张是 学号、姓名、系名、系主任表
传递函数依赖
设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
https://blog.csdn.net/rl529014/article/details/48391465
采用这位大佬的例子
在关系R(学号 ,宿舍, 费用)中,(学号)->(宿舍),宿舍!=学号,(宿舍)->(费用),费用!=宿舍,所以符合传递函数的要求
第三范式
满足第二范式的条件下不存在传递函数依赖。
要满足第三范式,在分成两张表的时候第二张表还是有问题?
学号->系名,系名->系主任 传递依赖。
需要将系名和系主任另外新建一张表。
总结:
第一范式:简单说 列不能再分
第二范式:简单说 建立在第一范式基础上,消除部分依赖
第三范式:简单说 建立在第二范式基础上,消除传递依赖。
码:表中可以唯一确定一个元组的某个属性(或者属性组),如果这样的码有不止一个,那么大家都叫候选码,我们从候选码中挑一个出来做老大,它就叫主码。
主属性:一个属性只要在任何一个候选码中出现过,这个属性就是主属性。
非主属性:与上面相反,没有在任何候选码中出现过,这个属性就是非主属性。
BCNF范式
https://www.2cto.com/database/201404/290140.html
BCNF是3NF的改进形式
一个满足BCNF的关系模式的条件:
1.所有非主属性对每一个码都是完全函数依赖。
2.所有的主属性对每一个不包含它的码,也是完全函数依赖。
3.没有任何属性完全函数依赖于非码的任何一组属性。
如上表
(仓库名,管理员)->(物品名,数量)
(管理员,物品名)->(仓库名,数量)
但是(仓库名)->(管理员) 不满足第二条
所以需要改成两种表:
第一张:仓库名,管理员
第二张:仓库名,物品名,数量
第一范式,第二范式,第三范式,BCNF范式理解相关推荐
- MySQL (4) 第一范式 第二范式 第三范式 BC范式
第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不可再分的. 例如下图就不符合第一范式的要求 实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS) ...
- 第一范式 第二范式 第三范式 BC范式
第一范式 第一范式:所有属性都是不可分割的原子值. 也就是每个属性都是不可再分的. 例如下图就不符合第一范式的要求 实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RD ...
- 第一范式 第二范式 第三范式理解
数据库中设计一个好的标准化范式能大大减少数据冗余,增强数据的易操作性. 范式的演变: 第一范式:表中没有重复数据组 属性不可以再分,具有一个主键(主键组) 例如: 出现从重复的数据组,把它转换为第一范 ...
- 第一范式第二范式第三范式学习笔记
三楚白云生佛手,九江寒月照禅心. --李日华<佛手岩> 文章目录 前言 一.第一范式(1NF) 二.第二范式(2NF) 三.第三范式(3NF) 四.参考学习视频 五.名词解释&知识 ...
- 数据库第一范式、第二范式、第三范式、BCNF范式
文章目录 什么是"范式(NF)" 1. 第一范式(1NF) 2. 第二范式(2NF) 2.1 函数依赖 2.1.1完全函数依赖 2.1.2 部分函数依赖 2.2 码 2.3 非主属 ...
- 数据库 部分函数依赖 完全函数依赖 传递函数依赖 第一范式、第二范式、第三范式、BCNF范式区别
数据库 部分函数依赖 完全函数依赖 传递函数依赖 第一范式.第二范式.第三范式.BCNF范式区别 在理解函数依赖之前,先来看一下函数依赖分析: 在关系中,包括在任何候选码中的属性称为主属性:不包括 ...
- 【数据库】范式理解:1NF,2NF,3NF,BCNF,4NF详析
数据库入门(一)范式理解:1NF,2NF,3NF,BCNF,4NF详析 引言 范式种类 第一范式(1NF) 符合1NF的关系中的每个属性都不可再分 存在问题 第二范式(2NF) 在1NF基础上消除了非 ...
- 关于1NF、2NF、3NF、BCNF范式
首先要明白"范式(NF)"是什么意思.按照教材中的定义,范式是"符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度".很晦涩吧?实际上 ...
- mysql中bcnf_请问数据库设计中BCNF范式是什么意思?
展开全部 BCNF范式在3NF基础上消除对主码子集的62616964757a686964616fe78988e69d8331333431373230依赖. 以仓库管理关系表为例:仓库号,存储物品号,管 ...
最新文章
- R语言实战应用精讲50篇(十五)-R语言如何实现数据的导入导出操作
- 重新使用Eclipse建立安卓工程遇到的问题
- 大数据互联网架构阶段 Spring框架导致的406错误
- 微软想让你跟机器人说句话就把事办了
- RHEL5.5学习--LAMP环境的安装顺序及主要软件
- JCGridMenu
- python结构体字节对齐_Python及字节对齐的问题
- 2. Zend_Controller 快速入门
- Linux ARM平台开发系列讲解(网络篇)1.2 MDIO总线驱动框架分析
- .axf文件_一文看懂hex文件、bin文件、axf文件的区别
- 弘辽科技:DSR的含义是?怎么提升DSR评分?
- 中国联通5G网络架构
- 用python的xlwings模块实现excel工作表批量隐藏和取消隐藏
- C++输入输出的格式控制2
- h5微信本地调试 vue_UniApp本地调试H5(谷歌chrome浏览器)跨域问题的解决方法,亲测可用...
- Linux系统中sit0是做什么的
- 手机通过IP访问电脑(端口、网站),手机以及电脑IP查看,防火墙开放指定端口设置。
- Failure to find xxx:jar:0.0.1 in https://repo.maven.apache.org/maven2 was cached in the local re
- servlet登录验证并返回错误信息
- 计算机课导入语,信息技术课的提问和导入技巧
热门文章
- LintCode 1683. 杀怪兽(队列)
- 数据结构--队列Queue--循环顺序队列
- 系统错误_Win10系统提示0x80004005错误的解决方法
- html怎么修改锚点的属性,在HTML中设置自定义锚点
- linux视频在windows播放器,适用于Windows和Linux的免费多媒体播放器SMPlayer 18.6.0发布 - 爱绿豆...
- day24 反射\元类
- MySQL日志详细说明
- python---str和repr
- CentOS 6快捷安装RabbitMQ教程
- 解决sublime3不能编辑插件default settings的问题