基本概念:如果有一个关系模式R(A1,A2,…,An),X和Y为R的子集,r是R的任一具体关系,那么对于关系r中的任意X值,都只有一个Y值与之对应,称X函数决定Y或Y函数依赖于X。例:对于关系模式SC(sno,cno,grade)有以下函数依赖关系:(sno,cno)→grade
基本术语和符号:
1.如果X→Y,但Y不包含于X,则称X→Y是非平凡的函数依赖;如果X→Y,但Y包含于X,则称X→Y是平凡的函数依赖。
2.如果X→Y,称X为决定因子。
3.如果X→Y,且Y→X,记作XY。
4.如果X→Y,并且对于X的任意真子集X1都有Y不函数依赖于X1,称Y完全函数依赖于X,记作XY;如果X1→Y成立,则称Y部分函数依赖于X,记作X
Y。
5.如果X→Y,Y→Z,称Z传递函数依赖于X。
6.设K为关系模式R的一个属性或属性组,若满足:KA1,K
A2,...,K
An,则称K为关系模式R的候选键。
函数依赖的推理规则:
自反律:若YX
U,则X
Y在R上成立。
增广律:若X→Y在R上成立,且ZU,则XZ→YZ在R上也成立。
传递律:X→Y和Y→Z在R上成立,则X→Z在R上也成立。
合并规则:若X→Y和X→Z在R上成立,则X→YZ在R上也成立。
分解规则:若X→Y和ZY在R上成立,则X→Z在R上也成立。
伪传递规则:若X→Y和YW→Z在R上成立,则XW→Z在R上也成立。
复合规则:若X→Y和W→Z在R上成立,则XW→YZ在R上也成立。
函数依赖集闭包:在关系模式R(U,F)中,U是R的属性全集,F是R上的一组函数依赖。所有被F逻辑蕴涵的函数依赖的全集称为F的闭包,记作。
计算:1. 初始,
=F
2. 对F中的每个函数依赖f应用自反律和增广律,并将结果加入中;若F中的两个函数依赖可以用传递律连接起来,也加入
中。
3. 重复步骤2,直到不再增大。
属性集闭包:{A | X
A能够由F根据Armstrong公理导出}
计算:1. 初始,
=X
2. 若F中有某个函数依赖YZ满足Y
,则
=
Z。
3. 重复步骤2,直到不再增大。
R的属性:1. L类:仅出现在函数依赖左部的属性。
2. R类:仅出现在函数依赖右部的属性。
3. N类:在函数依赖左部和右部均不出现的属性。
3. LR类:在函数依赖左部和右部均出现的属性。
候选键求解方法:1. 若X是L类,则X一定包含在关系模式R的任何一个候选键中:若包含了R的全部属性,则X为关系模式R的唯一候选键。
2. 若X是R类,则X不包含在关系模式R的任何一个候选键中。
3. 若X是N类,则X一定包含在关系模式R的任何一个候选键中。
2. 若X是LR类,则X可能包含在关系模式R的某个候选键中。