学习日志--数据库关系模式依赖与范式

一丶判断函数依赖
部分函数依赖:简单地说AB能得出C,并且A能得出C & B能的出C,C部分依赖于AB。

设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。

完全函数依赖:AB能得出C,且A,B都不能单独得到C,C完全依赖与AB。

设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。

传递函数依赖:通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A。

设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

二丶三种范式
第一范式 1NF
在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。所谓第一范式(1NF)是指数据库表的每一列(即每个属性)都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无重复的列

第二范式 2NF
第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。这个唯一属性列被称为主关键字或主键、主码。第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是非主属性依赖于主关键字

第三范式 3NF
满足第三范式(3NF)必须先满足第二范式(2NF)。在满足第二范式的基础上,切不存在传递函数依赖,那么就是第三范式。简而言之,第三范式就是属性不依赖于其它非主属性。

第四范式 4NF
定义:关系模式R属于1NF,对于R中的每一个非平凡多值依赖X→→Y,X都含有码,则R属于4NF。
  通俗地说,对于有三个属性的表,给定属性A一个值,剩余两个列之间不存在多对多的关系。例如,在上面的SPE表中,给定SNO=S1,PNO和ENO之间很明显存在多对多的关系,故上表是不属于4NF的。
根据4NF的定义可知,4NF所允许的非平凡的多值依赖实际上就是函数依赖,4NF就是消除表中的非平凡多值依赖关系。
简单地说就是

1、第一范式(1NF):一个关系模式R的所有属性都是不可分的基本数据项。
2、第二范式(2NF):满足第一范式,然后消除部分依赖。
3、第三范式(3NF): 满足第二范式,消除传递依赖。
4、BCNF:算是3NF的扩充,所有函数依赖都依赖于属于码的元素。
5、第四范式(4NF):在BCNF基础上消除表中的非平凡多值依赖关系。
6、第五范式(5NF):在4NF基础上消除连接依赖。

一个关系模式是4NF则它必为BCNF无可厚非

加一个小例题→
在某个数据库中,有关系模sc(sno,iname,ilocal,cno,ctitle,grade)其中sno为学号,iname为教师名,ilocal为教师住址,cno为课程号,ctitle为课程名,grade为成绩。
有以下语义:
SC(sno,iname,ilocal,cno,ctitle,grade)
1.每个学生可以选修多门课程,每门课程可以有多名学生选修,每个学生选修一门课程获得一个成绩

(sno,cno)->grade

2.每个教师有唯一的一个住址

iname->ilocal

3.每门课程有唯一课程号

cno-> ctitle

4.每个教师可以讲授多门课程,每门课程可以有多名教师讲授

1) 分析语义,给出函数依赖

F={(sno,cno)->grade , iname->ilocal, cno-> ctitle}

2) 分析范式类型
学习日志--数据库关系模式依赖与范式_第1张图片
存在部份依赖所以范式类型为1NF

3)举例说明存在哪些数据异常现象

<1>ilocal和ctitle可能会存在冗余。
<2>插入异常,如果有新增加的学生、老师、课程,都会因为没有选课信息而无法插入。
<3>删除异常,如果存在某老师只带了一门课,假设该课只有一个学生选修,因为人数太少,教务处停开该课,则删除该选课记录,就会导致这名老师的信息丢失。
<4>更新困难的问题。

4) 将其分解为更高一级范式

消除部份依赖后可有四个关系模式
1.(sno,cno,grade)2.(iname,ilcoal)3.(cno,ctitle)4.(iname,cno)
同时传递依赖也被排除。

END

你可能感兴趣的:(学习日志--数据库关系模式依赖与范式)