首页 理论教育函数依赖范式及其关系

函数依赖范式及其关系

【摘要】:函数依赖是数据依赖的一种,函数依赖反映了同一关系中属性间一一对应的约束。函数依赖理论是关系的1 NF、2 NF、3 NF和BC NF的基础理论。在理解函数依赖概念时,应当注意以下相关概念及表示。传递函数依赖记作。关系数据库中,凡非规范化的关系必须化成规范化的关系。3 NF是一个可用的关系模式应满足的最低范式。③没有任何属性完全函数依赖于非码的任何一组属性。

函数依赖是数据依赖的一种,函数依赖反映了同一关系中属性间一一对应的约束。函数依赖理论是关系的1 NF、2 NF、3 NF和BC NF的基础理论。

1.关系模式的简化表示法

关系模式的完整表示是一个五元组

R(U,D,Dom,F)

其中,R为关系名;U为关系的属性集合;D为属性集U中属性的数据域;Dom为属性到域的映射;F为属性集U的数据依赖集。

由于D和Dom对设计关系模式的作用不大,在讨论关系规范化理论时,可以把它们简化掉,从而使关系模式可以用三元组表示为

R(U,F)

从上式可以看出,数据依赖是关系模式的重要因素。数据依赖(Data Dependency)是同一关系中属性间的相互依赖和相互制约。数据依赖包括函数依赖(Functional Dependency,FD)、多值依赖(Muhivalued Dependency,MVD)和连接依赖(Join Dependency),数据依赖是关系规范化的理论基础。

2.函数依赖的概念

定义2-1:设R(U)是属性集U上的关系模式,X、Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而Y上的属性值不等,则称X函数确定Y函数,或Y函数依赖于X函数,记作X→Y。

例如,对于教学关系模式:

教学(U,F);

U={学号,姓名,年龄,性别,系名,系主任,课程名,成绩};

F={学号→姓名,学号→年龄,学号→性别,学号→系名,系名→系主任,(学号,课程名)→成绩}。

函数依赖是属性或属性之间一一对应的关系,它要求按此关系模式建立的任何关系都应满足F中的约束条件。在理解函数依赖概念时,应当注意以下相关概念及表示。

定义2-2:在R(U)中,如果X→Y,并且对于X的任何一个真子集X′,都有X′→\Y。则称Y对X完全函数依赖,记作:;若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作

例如,在教学关系模式中,学号和课程名为主码。模式中,有些非主属性完全依赖于主码,另一些非主属性部分依赖于码。如:(学号,课程名)成绩,(学号,课程名)姓名。

定义2-3:在R(U)中,如果X→Y,(YX),Y→\X,Y→X,则称Z对X传递函数依赖。传递函数依赖记作

例如,在教学模式中,因为存在:学号→系名,系名→系主任;所以也存在:学号系主任。

3.1NF的定义

关系的第一范式是关系要遵循的最基本的范式。

定义2-4:如果关系模式R,其所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式(First Normal Form,简称ⅠNF),记作R∈1 NF。

例如,教学模式中所有的属性都是不可再分的简单属性,即:教学∈1 NF。

不满足第一范式条件的关系称之为非规范化关系。关系数据库中,凡非规范化的关系必须化成规范化的关系。关系模式如果仅仅满足第一范式是不够的,尽管教学关系服从1 NF,但它仍然会出现插入异常、删除异常、修改复杂及数据冗余大等问题。只有对关系模式继续规范,使之服从更高的范式,才能得到高性能的关系模式。

4.2NF的定义

定义2-5:若R∈1NF,且每一个非主属性完全依赖于码,则R∈2 NF∽,。.+

下面分析一下关系模式:“教学”的函数依赖,看它是否服从2NF。如果“教学”模式不服从2NF,可以根据2NF的定义对它进行分解,使之服从2NF。在教学模式中:

属性集={学号,姓名,年龄,系名,系主任i课程名,成绩}。

函数依赖集={学号→姓名,学号→年龄,学号→性别,学号→系名,系名→系主任,(学号,课程名)→成绩}。

主码=(学号,课程名)。

非主属性=(姓名,年龄,系名,系主任,成绩)。

非主属性对码的函数依赖={(学号,课程名)姓名,(学号,课程名)年龄,(学号,课程号)性别,(学号,课程名系名,(学号,课程名系主任;(学号,课程名成绩}。(www.chuimin.cn)

显然,教学模式不服从2NF,即教学∉2NF。

根据2NF’的定义,将教学模式分解为

学生_系(学号,姓名,年龄,性别,系名,系主任);

选课(学号,课程名,成绩)。

再用2NF的标准衡量学生_系和选课模式,会发现它们都服从2NF,即

学生_系∈2 NF;选课∈2NF。

5.3NF的定义

定义2-6:关系模式R(U,F)中若不存在这样的码X、属性组Y及非主属性Z(ZY)使得X→Y、YX、Y→Z成立,则称R(U,F)∈3 NF。

由定义2-6可以证明,若R∈3 NF,则每一个非主属性既不是部分函数依赖于码,也不是传递函数依赖于码。

3 NF是一个可用的关系模式应满足的最低范式。也就是说,一个关系模式如果不服从3 NF,实际上它是不能使用的。

考查学生_系关系,会发现由于学生_系的关系模式中存在:学号→系名,系名→系主任。则:学号系主任。由于主码“学号”与非主属性“系主任”之间存在传递函数依赖,所以学生_系∉3 NF:如果对学生_系关系按3 NF的要求进行分解,分解后的关系模式为

学生(学号,姓名,年龄,性别,系名);

教学系(系名,系主任)。

显然分解后的各子模式均属3 NF。

6.BC NF的定义

BC NF(Boyce Codd Normal Form)是由Boyce和Codd提出的,它比上述的3 NF又进了一步。通常认为BC NF是修正的第三范式,有时也称它为扩充的第三范式。

定义2-7:关系模式R(U,F)∈1 NF。若X→Y且YX时X必含有码,则R(U,F)∈BC NF。

也就是说,关系模式R(U,F)中,若每一个决定因素都包含码,则R(U,F)∈BC NF。由BC NF的定义可以得到,一个满足BCNF的关系模式有如下结论。

①所有非主属性对每一个码都是完全函数依赖。

②所有的主属性对每一个不包含它的码,也是完全依赖。

③没有任何属性完全函数依赖于非码的任何一组属性。

如果R属于BC NF,由于R排除了任何属性对码的传递依赖与部分依赖,所以R一定属于3 NF。但是,若R∈3 NF,则R未必属于BC NF。

7.BC NF和3NF的比较

BC NF和3 NF、的区别主要反映在以下两点。

①BC NF不仅强调其他属性对码的完全直接的依赖,还强调主属性对码的完全直接的依赖,它包括3 NF,即R∈BC NF,则R一定属于3 NF。

如果一个实体集中的全部关系模式都属于BC NF,则实体集在函数依赖范畴已实现了彻底的分离,消除了插入和删除异常问题。

②3 NF只强调非主属性对码的完全直接依赖,这样就可能出现主属性对码的部分依赖和传递依赖。

有些关系模式属于3 NF,但不属于BC NF。例如,关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。语义为:每一位教师只能讲授一门课程,每门课程由若干教师讲授;每个学生选修某门课程对应一个固定的教师。由语义可以得到STJ模式的函数依赖为:

F={(S,J)→T,T→J}

显然:(S,J)和(T,S)都是关系的码;关系的主属性集为{S,T,J},非主属性为∅(空集)。由于STJ模式中无非主属性,所以它属于3 NF;但因为存在T→J,由于T不是码,故STJ∉BC NF。那些不服从BC NF的关系模式仍然存在不合适的地方。非BC NF的关系模式可以通过分解的方法将其转换成BC NF。例如,STJ模式可以分解为ST(S,T)和JT(J,T)两个模式,其分解后的子模式都属于BC NF。