https://blog.csdn.net/weixin_...数据库
关系数据库中的关系知足必定要求的,知足不一样程度要求的为不一样的范式。知足最低要求的叫第一范式,简称1NF;在第一范式的基础上知足进一步要求的称为第二范式,简称2NF,其他范式以此类推。对于各类范式之间有以下关系:
以下图所示:
1. 第一范式 1NF函数
定义: 属于第一范式关系的全部属性都不可再分,即数据项不可分。spa
理解: 第一范式强调数据表的原子性,是其余范式的基础。以下图所示数据库就不符合第一范式:
上表将商品这一数据项又划分为名称和数量两个数据项,故不符合第一范式关系。改正以后以下图所示:
上表就符合第一范式关系。.net
但平常生活中仅用第一范式来规范表格是远远不够的,依然会存在数据冗余过大、删除异常、插入异常、修改异常的问题,此时就须要引入规范化概念,将其转化为更标准化的表格,减小数据依赖。设计
规范化: 一个低一级的关系模式经过模式分解能够转化为若干个高一级范式的关系模式的集合,这个过程叫作规范化。blog
2. 第二范式 2NF图片
定义: 若某关系R属于第一范式,且每个非主属性彻底函数依赖于任何一个候选码,则关系R属于第二范式。rem
此处咱们须要理解非主属性、候选码和彻底函数依赖的概念。get
候选码: 若关系中的某一属性组的值能惟一地标识一个元组,而其子集不能,则称该属性组为候选码。若一个关系中有多个候选码,则选定其中一个为主码。it
如下全部内容中,主码或候选码都简称为码。
例以下图所示的学生表中,学号和姓名均可以惟一标识一个元组,故该表的候选码为学号和姓名,主码咱们能够随便选定其中一个,则选学号为主码。
学号
姓名
年龄
性别
101
刘晨
19
女
102
王琪
21
男
103
张宇
20
男
104
李琛
19
女
105
欧阳慧
20
女
主属性: 全部候选码的属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性。
在上面的学生表中,学号和姓名就是该关系的主属性,年龄和性别就是非主属性。
函数依赖: 设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称Y函数依赖于X或X函数肯定Y。
彻底函数依赖: 设R(U)是属性集U上的关系模式,X、Y是U的子集。若是Y函数依赖于X,且对于X的任何一个真子集X’,都有Y不函数依赖于X’,则称Y对X彻底函数依赖。记做:若是Y函数依赖于X,但Y不彻底函数依赖于X,则称Y对X部分函数依赖。
理解: 第二范式是指每一个表必须有一个(有且仅有一个)数据项做为关键字或主键(primary key),其余数据项与关键字或者主键一一对应,即其余数据项彻底依赖于关键字或主键。由此可知单主属性的关系均属于第二范式。
判断一个关系是否属于第二范式:
以上面的学生表为例,表中的码为学号(码能够为学号或者姓名,此处假定码为学号),非主属性为性别、年龄(其他都为主属性),当学号肯定时,性别、年龄也都唯一的被肯定为,故学生表的设计知足第二范式(学生表为单主属性的关系)。
下面举一个不知足第二范式的关系。
有关系模式S-L-C(Sno, Sdept, Sloc, Cno, Grade),其中Sno, Sdept, Sloc, Cno, Grade依次表示学生的学号、所在的系、住处、课程号、班级,而且每一个系的学生住在同一个地方。可知S-L-C的码为(Sno, Cno),则存在如下函数依赖:
能够看到,非主属性Sloc、Sdept并不彻底函数依赖于码,所以关系模式S-L-C(Sno, Sdept, Sloc, Cno, Grade)不符合第二范式。
3. 第三范式 3NF
定义: 非主属性既不传递依赖于码,也不部分依赖于码。
首先咱们要理解传递函数依赖的概念。
理解: 第三范式要求在知足第二范式的基础上,任何非主属性不依赖于其余非主属性,即在第二范式的基础上,消除了传递依赖。
在下图S-L关系中,Sloc对Sno传递函数依赖,故该关系不属于第三范式。
4. BC范式 BCFN
定义: 关系模式R<U,F>中,若每个决定因素都包含码,则R<U,F>属于BCFN。
理解: 根据定义咱们能够获得结论,一个知足BC范式的关系模式有:
例若有关系模式C(Cno, Cname, Pcno),Cno, Cname, Pcno依次表示课程号、课程名、先修课。可知关系C只有一个码Cno,且没有任何属性对Cno部分函数依赖或传递函数依赖,因此关系C属于第三范式,同时Cno是C中的惟一决定因素,因此C也属于BC范式。
5. 第四范式 4NF
定义: 限制关系模式的属性之间不容许有非平凡且非函数依赖的多值依赖。
理解: 显然一个关系模式是4NF,则必为BCNF。也就是说,当一个表中的非主属性互相独立时(3NF),这些非主属性不该该有多值,如有多值就违反了4NF。
6. 第五范式 5NF
第五范式有如下要求:
(1)必须知足第四范式;
(2)表必须能够分解为较小的表,除非那些表在逻辑上拥有与原始表相同的主键。
第五范式是在第四范式的基础上作的进一步规范化。第四范式处理的是相互独立的多值状况,而第五范式则处理相互依赖的多值状况。