在实际应用中,关系中的属性取值并不完全是独立的,相互之间可能有一定的依赖关系,称为数据依赖。基本的数据依赖有函数依赖(Functional Dependency, FD)和多值依赖(Multi-value Dependency, MVD)
设R〈U〉是属性集U上的关系模式,X、Y是U的子集,若对于R〈U〉的任意一个可能的关系r,r中都不可能存在两个元组s,t使得s[X]=t[X]),而s[Y]≠t[Y],则称属性集X函数确定Y,或Y函数依赖于X,记作
X
→
Y
X→Y
X→Y。
在函数依赖
X
→
Y
X→Y
X→Y中,X称为决定因素(Determinant),Y叫做依赖因素(Dependent)。
对于教学关系模式:R(U,F),U= { 学号, 姓名, 年龄, 性别, 系名, 系主任, 课程名, 成绩 };根据语义, F = { 学号→姓名, 学号→年龄, 学号→性别, 学号→系名,系名→系主任,(学号,课程名)→成绩 }。
设关系模式R(ABCD),在R的关系中,属性值间存在这样的联系:A与B值间是一对多,C与D值间是一对一,由此写出可能的函数依赖。解:从A与B值间是一对多的联系,可得 B→A。
从C值与D值间的一对一联系,可得 C→D 和 D→C。
如果
X
→
Y
X→Y
X→Y和
Y
→
X
Y→X
Y→X同时成立,则可记为
X
←
→
Y
X←→Y
X←→Y。也就是在关系中,X值和Y值具有一一对应关系,从函数依赖的角度讲,它们等价。
1NF的定义为:符合1NF的关系中的每个属性都不可再分。
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。
4.BCNF范式要在 3NF 的基础上消除主属性对于码的部分与传递函数依赖。
1NF: 字段是最小的的单元不可再分
2NF:满足1NF,表中的字段必须完全依赖于全部主键而非部分主键 (一般我们都会做到)
3NF:满足2NF,非主键外的所有字段必须互不依赖4NF:满足3NF,消除表中的多值依赖



