旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

数据库四个范式你又相识若干【MySQL教程】,范式,mysql

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:67评论:0


导读:本篇文章给人人带来的内容是关于数据库四个范式,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。1、1NF(第一范式)第一范式是指数据库表中的每一列都是不可...
本篇文章给人人带来的内容是关于数据库四个范式,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。

1、1NF(第一范式)

第一范式是指数据库表中的每一列都是不可分割的基础数据项,统一列中不能有多个值,即实体中的某个属性不能有多个值或许不能有反复的属性。

假如涌现反复的属性,就能够须要定义一个新的实体,新的实体由反复的属性构成,新实体与原实体之间为一对多关联。第一范式的形式请求属性值不可再分裂成更小部份,即属性项不能是属性组合或是由一组属性构成。

简而言之,第一范式就是无反复的列。比方,由“职工号”“姓名”“电话号码”构成的表(一个人能够有一部办公电话和一部移动电话),这时候将其范例化为1NF能够将电话号码分为“办公电话”和“移动电话”两个属性,即职工(职工号,姓名,办公电话,移动电话)。

2、2NF(第二范式)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必需先满足第一范式(1NF)。第二范式(2NF)请求数据库表中的每一个实例或行必需能够被唯一地辨别。为完成辨别一般须要为表加上一个列,以存储各个实例的唯一标识。

假如关联模子R为第一范式,而且R中的每一个非主属性完整函数依靠于R的某个候选键,则称R为第二范式形式(假如A是关联形式R的候选键的一个属性,则称A是R的主属性,不然称A是R的非主属性)。

比方,在选课关联表(学号,课程号,结果,学分),症结字为组合症结字(学号,课程号),但由于非主属性学分仅依靠于课程号,对症结字(学号,课程号)只是部份依靠,而不是完整依靠,因而此种体式格局会致使数据冗余以及更新非常等题目,解决办法是将其分为两个关联形式:门生表(学号,课程号,分数)和课程表(课程号,学分),新关联经由过程门生表中的外症结字课程号联络,在须要时举行衔接。

3、3NF(第三范式)

假如关联模子R是第二范式,且每一个非主属性都不通报依靠于R的候选键,则称R是第三范式的形式。

以门生表(学号,姓名,课程号,结果)为例,个中门生姓名无重名,所以该表有两个候选码(学号,课程号)和(姓名,课程号),故存在函数依靠:学号——>姓名,(学号,课程号)——>结果,唯一的非主属性结果对码不存在部份依靠,也不存在通报依靠,所以属性属于第三范式。

4、BCNF(BC范式)

它构建在第三范式的基础上,假如关联模子R是第一范式,且每一个属性都不通报依靠于R的候选键,那末称R为BCNF的形式。

假定堆栈治理关联表(堆栈号,存储物品号,治理员号,数目),满足一个治理员只在一个堆栈事情;一个堆栈能够存储多种物品,则存在以下关联:

(堆栈号,存储物品号)——>(治理员号,数目)

(治理员号,存储物品号)——>(堆栈号,数目)

所以,(堆栈号,存储物品号)和(治理员号,存储物品号)都是堆栈治理关联表的候选码,表中唯一非症结字段为数目,它是相符第三范式的。然则,由于存在以下决议关联:

(堆栈号)——>(治理员号)

(治理员号)——>(堆栈号)

即存在症结字段决议症结字段的状况,因而其不相符BCNF。把堆栈治理关联表分解为两个关联表堆栈治理表(堆栈号,治理员号)和堆栈表(堆栈号,存储物品号,数目),如许这个数据库表是相符BCNF的,并消除了删除非常、插进去非常和更新非常。

5、4NF(第四范式)

设R是一个关联模子,D是R上的多值依靠鸠合。假如D中存在凡多值依靠X->Y时,X必是R的超键,那末称R是第四范式的形式。

比方,职工表(职工编号,职工孩子姓名,职工选修课程),在这个表中,统一个职工能够会有多个职工孩子姓名,一样,统一个职工也能够会有多个职工选修课程,即这里存在着多值现实,不相符第四范式。假如要相符第四范式,只须要将上表分为两个表,使它们只要一个多值现实,比方职工表一(职工编号,职工孩子姓名),职工表二(职工编号,职工选修课程),两个表都只要一个多值现实,所以相符第四范式。

1 、第一范式(1NF)
在任何一个关联数据库中,第一范式(1NF)是对关联形式的基础请求,不满足第一范式(1NF)的数据库就不是关联数据库。
所谓第一范式(1NF)是指数据库表的每一列(即每一个属性)都是不可分割的基础数据项,统一列中不能有多个值,即实体中的某个属性不能有多个值或许不能有反复的属性。简而言之,第一范式就是无反复的列。
2、 第二范式(2NF)
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必需先满足第一范式(1NF)。第二范式(2NF)请求数据库表中的每一个实例或行必需能够被唯一地辨别。为完成辨别一般须要为表加上一个列,以存储各个实例的唯一标识。员工信息表中加上了员工编号(emp_id)列,由于每一个员工的员工编号是唯一的,因而每一个员工能够被唯一辨别。这个唯一属性列被称为主症结字或主键、主码。
第二范式(2NF)请求实体的属性完整依靠于主症结字。所谓完整依靠是指不能存在仅依靠主症结字一部份的属性,假如存在,那末这个属性和主症结字的这一部份应当分离出来构成一个新的实体,新实体与原实体之间是一对多的关联。为完成辨别一般须要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就黑白主属性依靠于主症结字。
3 、第三范式(3NF)
满足第三范式(3NF)必需先满足第二范式(2NF)。在满足第二范式的基础上,切不存在通报函数依靠,那末就是第三范式。简而言之,第三范式就是属性不依靠于别的非主属性。

以上就是数据库四个范式你又相识若干的细致内容,更多请关注ki4网别的相干文章!

标签:范式mysql


欢迎 发表评论: