,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,数据库设计之函数依赖,问题提出,函数依赖,码,第一范式,第二范式,第三范式,第1页,第1页,问题提出,上表(关系模式)存在缺点:,1、数据重复、冗余。2、新增学生或课程,若未选课,则无法插入统计,由于(学号,课程号)为主键。3、假如有学生退学,则需将相关信息所有删除,造成课程信息也许丢失。,第2页,第2页,改进关系模式,第3页,第3页,函数依赖,设R(U)是一个属性集U上关系模式,X和Y是U,子集,。,若对于R(U)任意一个也许关系r,r中不也许存在两个元组在X上属性值相等,而在Y上属性值不等,则称“,X,函数拟定,Y,”或“Y,函数,依赖于X”,记作XY。,X称为这个函数依赖决定属性集(Determinant)。,Y=f(x),第4页,第4页,依赖分类(1),非平凡函数依赖,假如 X Y,但 Y 不为 X 子集,则称 X Y 是非平凡函数依赖例:在关系SC(Sno,Cno,Grade)中,(Sno,Cno)Grade,平凡依赖,若 X Y,但 Y 为 X 子集,则称 X Y 是平凡函数依赖例:(Sno,Cno)Sno,(Sno,Cno)Cno,第5页,第5页,依赖分类(2),部分函数依赖,若 x y 并且,存在 x 真子集 x1,使得 x1 y,则 y 部分依赖于 x。,例:学生表(学号,姓名,性别,班级,年龄)关系中,部分函数依赖:(学号,姓名)性别,学号 性别,因此(学号,姓名)性别 是部分函数依赖,完全依赖,若 x y 并且,对于 x 任何一个真子集 x1,都不存在 x1 y 则称y完全依赖于x。例:成绩表(学号,课程号,成绩)关系中,完全函数依赖:(学号,课程号)成绩,学号 成绩,课程号 成绩,因此(学号,课程号)成绩 是完毕函数依赖,第6页,第6页,依赖分类(3),传递函数依赖,若x y并且y z,而y x,则有x z,称这种函数依赖为传递函数依赖。例:关系S1(学号,系名,系主任),学号 系名,系名 系主任,并且 系名 学号,因此 学号 系主任 为传递函数依赖,第7页,第7页,码,设K为R(U)中属性或属性组合,若K U,则K为R候选码(或关键字),选择其中一个作为主码。,第8页,第8页,第一范式(1NF),假如关系模式R(U)中每个属性都是不可分割数据项,则称R属于第一范式。,订单号,产品,数量,经手人,A001,茶杯笔记本,4030,张三,A002,U盘,20,李四,A003,笔记本U盘,5040,张三,第9页,第9页,第二范式(2NF),设有R(U)属于1NF,且其每一个非主属性,完全依赖,于主码,则称R(U)满足2NF。,教学表(学号,姓名,系别,系主任,课程号,成绩),表1(学号,姓名,系别,系主任),表2(学号,课程号,成绩),第10页,第10页,第三范式(3NF),设有R(U)属于2NF,且其每一个非主属性,不传递依赖,于主码,则称R(U)满足3NF。,表1(学号,姓名,系别,系主任),表1_1(学号,姓名,系别),表1_2(系别,系主任),第11页,第11页,作业1,对于教学来说,有“学号、姓名、性别、奖学金等级、奖学金金额、任课教师编号、任课教师姓名、任课教师职称”等信息,请对此设计一个合理关系数据库模式。,第12页,第12页,作业2,将上表重新设计(拆分),使之符合3NF。,第13页,第13页,