➢ 消除部分函数依赖的方法就是将关系分解,使其新的关系中非主 属性于候选键之间不存在部分函数依赖。
前面已经分析过StudData的主键是(Sno, Cno)。所以, Sno,Cno是主属 性,其他属性如Sname、 Ssex等都是非主属性。根据主键定义,
(Sno,Cno)完全函数决定其他非主属ห้องสมุดไป่ตู้。所以存在如下函数依赖:
➢结果:冗余问题已得到明显改善,但还有一定的数据冗 余,还存在插入异常和删除异常。
➢属于第二范式的关系同样还可能存在操作异常情况,因 此需要进一步规范化。
第三范式(3NF)
➢ 定义:如果关系R∈2NF,且每一个非主属性都不传递依赖于候 选键,则R属于第三范式,记作R∈3NF。
➢ StudData分解后得到的三个关系Students、Courses、Enrollment, 它 们 都 属 于 第 二 范 式 了 。 但 Students(Sno,Sname,Ssex,Sage, Dno,Dname)不属于3NF。
Grade
➢ 分解的方法是投影。具体讲: (1)用组成候选键的属性集合的每一个非空真子集作 为主键构成一个新关系;
(2)对于每个新关系,将完全依赖或传递依赖于此主 键的属性放置到此关系中。
下面将StudData关系按上述方法分解:
➢StudData关系只有一个候选键,也就是主键(Sno,Cno)。 ➢它的非空子集有:Sno、Cno、(Sno,Cno)。对应构成三个 新关系,设分别为Students和Courses、Enrollment,其中, Students的主键为Sno,Courses的主键为Cno,Enrollment 的主键为(Sno,Cno)。 ➢将完全依赖或传递依赖于Sno主键的属性放置到Students 表中,完全依赖或传递依赖于Cno主键的属性放置到 Courses表中,完全依赖或传递依赖于(Sno,Cno)主键的属性 放置到Enrollment表中得到: