如果属性集合Y中每个属性的值构成的集合唯一地决定了属性集合X中每个属性的值构成的集合,则属性集合X函数依赖于属性集合Y,计为:Y→X。属性集合Y中的属性有时也称作函数依赖Y→X的决定因素(determinant)。例:身份证号→姓名。
第一节 函数依赖
|
前面我们已经讨论了关系数据库的基本概念、关系模型的三个部分(关系数据结构、关系操作集合和关系完整性)以及关系数据库的标准语言。但是还有一个很基本的问题尚未涉及,针对一个具体问题,应该如何构造一个适合于它的数据库模式,即应该构造几个关系模式,每个关系由哪些属性组成,各属性之间的依赖关系及其对关系模式性能的影响等。这就是关系数据库规范化理论所要研究的问题。 5.1函数依赖 5.1.1函数依赖的基本概念 定义5.1:设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,t1,t2是r中的任意两个元组,如果由t1[X]=t2[X]Tt1[Y]=t2[Y],(即不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等)则称X函数确定Y或Y函数依赖于X,记作X→Y。 5.1.2一些术语和记号 设R(U)是属性集U上的关系模式。X,Y是U的子集。 X→Y,但Y不包含于X则称X→Y是非平凡的函数依赖。 若不特别声明,我们总是讨论非平凡的函数依赖。 X→Y,但Y 若X→Y,则X叫做决定因子。 若X→Y,Y→X,则记作X←→Y。 若Y不函数依赖于X,则记作X 例:判断以下函数依赖的对错
补充:属性间的联系决定函数依赖关系 设X、Y均是U的子集
例:STUDENTS(SNO,SNAME,SSEX,SAGE,SDEPT,SPLACE) X Y SNO → (SNAME,SSEX,SAGE) SNO → SPLACE SPLACE → SDEPT SSEX → SDEPT 例:设关系X,Y,W为关系R中的三个属性组,属性关系如下图所示,问X→Y, X→W, W→Y 各属上述何种函数依赖: X→Y为平凡函数依赖 X→W, W→Y为非平凡函数依赖 补充: 定义5.2:在R(U)中,如果X→Y,并且对于X的任何一个真子集X' ,都有X' 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X (一般,1:1为完全函数依赖,m:1为部分函数依赖) 定义5.3:在R(U)中,如果X→Y,(Y?X),Y |
设R(U)是一个属性集U上的关系模式,X和Y是U的
子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “ X函数确定 Y” 或 “Y 函数依赖于X”,记作X→Y。 X称为这个函数依赖的决定属性集(Determinant)。 Y=f(x) 说明: 1. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。 2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。 例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立 3. 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“ 姓名→ 年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。 例: Student(Sno, Sname, Ssex, Sage, Sdept) 假设不允许重名,则有: Sno → Ssex, Sno → Sage , Sno → Sdept, Sno ←→ Sname, Sname → Ssex, Sname → Sage Sname → Sdept 但Ssex →Sage 若X→Y,并且Y→X, 则记为X←→Y。 若Y不函数依赖于X, 则记为X─→Y。 在关系模式R(U)中,对于U的子集X和Y, 如果X→Y,但Y X,则称X→Y是非平凡的函数依赖 若X→Y,但Y X, 则称X→Y是平凡的函数依赖 例:在关系SC(Sno, Cno, Grade)中, 非平凡函数依赖: (Sno, Cno) → Grade 平凡函数依赖: (Sno, Cno) → Sno (Sno, Cno) → Cno |