函数依赖:
函数依赖的基本理解
函数依赖的定义:
理解:
关键看X属性组,若在关系R中,元组的X属性组相同时,有Y属性组相同,X函数决定Y。
并且,若在关系R中,每个元组的X属性组都不相同,则X一定函数决定Y。
函数依赖示例
函数依赖的特性
理解:
(1)属性组X函数决定属性组Y,且Y不包含于X,则这种函数依赖也叫非平凡的函数依赖。
之后针对的大部分都是非平凡的函数依赖,因为平凡的函数依赖研究起来没意义!!!
(2)属性组X函数决定属性组Y,则任意若干个元组,若在属性组X上的值相同,那么对应的属性组Y的组一定相同。
(3)略。
(4)略。
(5)若函数依赖是基于关系模式R的,则对于该关系模式下所描述的所有关系,都有该函数依赖。若函数依赖是基于具体的关系r的,则函数依赖对该关系必然成立。
(6)若在关系R中,每个元组的X属性组都不相同,则X一定函数决定Y。
函数依赖的练习:
函数依赖分类
完全函数依赖
完全函数依赖和部分函数依赖定义
理解:
在关系模式R中,有属性组X函数决定属性组Y,
若属性组X内的所有真子集都不函数依赖属性Y,则称X完全函数决定Y,也叫Y完全函数依赖于X。
若存在属性组X内的真子集函数决定属性组Y,则称X部分函数决定Y,也叫Y部分函数依赖于X
完全函数依赖和部分函数依赖练习:
传递函数依赖
传递函数依赖基本定义:
理解:
在关系模式R中,有属性组X函数决定属性组Y,属性组Y函数决定属性组Z,且Y不包含于X,Z不包含于Y(表明这两个函数依赖都是非平凡的函数依赖),且Z不包含于X,Y不函数决定X,那么则称Z传递函数依赖于X,也叫X传递函数决定Z。
传递函数依赖练习
函数依赖的几个重要概念:
候选键
候选键的定义:
理解:
在关系模式R(U)中,若有属性组K完全函数决定整个U属性组,则称K为关系模式R上的候选键(候选码)。
候选码中的每一个属性叫主属性,在属性组U中,候选码K之外的每一个属性称为非主属性。
若属性组K是R的候选码,且属性组K包含于属性组S,则属性组S称为R的超键。
候选键练习
外来键(外键)
理解:
在关系模式R中,存在一个属性组X,该X并不是R的候选码,但属性组X是其他关系模式的候选码,则称X为R的外键。
逻辑蕴含:
理解:
在关系模式R中,把R中的所有函数依赖集合称为F,从F这堆函数依赖中推导出其他函数依赖比如X->Y,(X,Y都为R的属性组),则称F逻辑蕴含X->Y (R的函数依赖集合F逻辑蕴含属性组X函数决定Y)。(至于推导方式就是指ArmStrong公理)。
○若关系模式R中的每一个满足函数依赖集合F的关系r,能用形式逻辑推理方式推出X->Y(X,Y都为R的属性组),那么F逻辑蕴含X->Y。
○若关系模式R中的每一个满足依赖集合F的关系r,均满足X->Y,那么F逻辑蕴含X->Y。
对于函数依赖集合F的理解:函数依赖有显式的和隐含的,所以需要推导的都是隐含的。
闭包:
理解:
这么理解:由函数依赖集合F推导出的依赖集合统称F的闭包,记做F+。
F+肯定大于等于F,因为闭包包括F自身,也包括隐含函数依赖。
若F的闭包F+=F,那么称F为全函数依赖族,也叫函数依赖完备集。
关于函数依赖的公理和定理:
ArmStrong公理
ArmStrong公理介绍:
理解:
关系模式R(U),U为R描述的属性集,U={A1,A2,A3,…,An},F为R的函数依赖集合,那么关系模式也写做R(U,F)。
自反律:若属性组Y包含于属性组X,属性组X包含于U,那么X函数决定Y一定是F的逻辑蕴含。(X->Y也叫平凡的函数依赖)。
增广律:若属性组X函数决定属性组Y,且X->Y包含于F,且属性组Z包含于U,则XZ->YZ一定是F的逻辑蕴含。(XZ也就是(X,Z))。
传递律:若属性组X函数决定属性组Y,且X->Y包含于F,且属性Y函数决定属性组Z,则X函数决定Z一定是F的逻辑蕴含。(X->Z不一定是传递函数依赖,因为不一定满足传递函数依赖的定义)
ArmStrong公理证明
由ArmStrong公理推出的定理:
属性闭包:
理解:
在关系模式R(U,F)中,有属性组X包含于U,U={A1,A2,A3,…,An},能够通过ArmStrong推导出属性组X函数决定(单一属性)Ai,那么Ai的集合就是X关于F的属性闭包。
函数依赖集的最小覆盖:
覆盖的概念:
理解:
关系模式R的两个函数依赖集合F、G,如果F的闭包等于G的闭包,那么称F和G是等价的,也叫F覆盖G或G覆盖F。
属性闭包的计算算法:
理解:
利用自反律得到X0,X0={A,B},取X0的子集根据F得到AB->C,B->D,则根据第二步W=是C也是D,B为W的子集(C,D),再把X0与{C,D}求并集得到X1,重复求即可。
函数依赖集的性质:
最小覆盖:
关系范式:
1NF
**理解:**每个分量都是不可再分的数据项
2NF
**理解:**消除了非主属性对候选码的部分依赖
3NF
**理解:**消除了非主属性对候选的传递依赖。
BCNF(Boyce-Codd):
**理解:**所有的函数依赖中的决定因素必须包含候选码。
多值依赖:
4NF
**理解:**消除了非主属性对候选码以外的属性组的多值依赖。
转载:https://blog.csdn.net/l13kddd/article/details/105330313