1:关系模式涉及的问题:数据冗余,数据更新,数据插入,数据删除
2:函数依赖:一般把X函数决定Y,或Y函数依赖于X表示为:X->Y
一些术语和符号:
(1)如果X->Y,但Y不包含于X,则称X->Y是非平凡的函数依赖 A->B
如果X->Y,但Y包含于X,则称X->Y是平凡的函数依赖 AB->B
(2)如果Y不函数依赖于X,则记作X-/>Y
(3)如果X->Y,则称X为决定因子
(4)如果X->Y,并且Y->X,则记作X<->Y
(5)(如果X只有一个单属性作为主键,它是完全函数依赖)如果X->Y,并且对于X的一个任意真子集X'都有X'-/>Y,则称Y完全函数依赖于X,记作X—f—>Y;(属性组)如果X'->Y成立,则称Y部分函数依赖于X,记作X—p—Y
(6)如果X->Y(非平凡函数依赖,并且Y-/>X),Y->Z,则称Z传递函数依赖于X
(7)设K为关系模式R的一个属性或属性组,若满足:
K—f—A1,K—f—A2,...,K—f—An
则称K为关系模式R的候选键(或候选码)。称包含在候选键中的属性为主属性,不包含在任何候选码中的属性称为非主属性
3:函数依赖的推理规则
1:Armstrong公理
(1)自反律
若Y包含于X包含于U,则X->Y在R上成立。即一组属性函数决定它的所有子集(平凡函数依赖)
(2)增广律
若X->Y在R上成立,且Z包含于U,则XZ->YZ在R上也成立
2:Armstrong公理推论
(1)合并规则
若X->Y和Y->X在R上成立,则X->YZ在R上也成立
(2)分解规则
若X->Y和Z包含于Y在R上成立,则X->Z在R上也成立
(3)伪传递规则
若X->Z和YW->Z在R上成立,则XW->Z在R上也成立
(4)复合规则
若X->Y和W->Z在R上成立,则XW->YZ在R上也成立
4:闭包及候选键求解方法
1.函数依赖集的闭包
在关系模式R(U,F)中,U是R的属性全集,F是R上的一组函数依赖。设X,Y是U的子集,对于关系模式R的任一关系r,如果r满足F,则r满足X->Y,那么称F逻辑蕴涵X->Y,或称函数依赖X->Y可由F导出。
所有被F逻辑蕴涵的函数依赖的全集称为F的闭包,记作F+
计算F+的过程
步骤1:初始,F+=F
步骤2:对F+中的每个函数依赖f,在f上应用自反性和增广性,将结果加入F+中;对F+中的一对函数依赖f1和f2,如果f1和f2可以使用传递律结合起来,则将结果加入F+中
步骤3:重复步骤2,直到F+不再增大为止
2.属性集闭包(是属性集闭包一定是函数依赖集闭包)
确定这些附加的函数依赖的一种系统化方法是先确定每一组会在函数依赖左边出现的属性组X,再确定所有函数依赖于X的属性组X+,X+称为X在F下的闭包
计算X+的过程
步骤1:初始,X+=X
步骤2:如果F中有某个函数依赖Y->Z满足Y包含于X+。则X+=X+并Z
步骤3:重复步骤2,直到X+不再增大为止
3.候选键的求解方法
对于给定的关系模式R(A1,A2,...,An)和函数依赖集F,现将R的属性分为如下四类:
(1)L类:仅出现在函数依赖左部的属性
(2)R类:仅出现在函数依赖右部的属性
(3)N类:在函数依赖的左部和右部均不出现的属性
(4)LR类:在函数依赖的左部和右部不出现的属性
对R中的属性X,有以下结论:
(1)若X是L类属性,则X一定包含在关系模式R的任何一个候选键中;若X+包含了R的全部属性,则X为关系模式R的唯一候选键
(2)若X是R类属性,则X不包含在关系模式R的任何一个候选键中
(3)若X是N类属性,则X一定包含在关系模式R的任何一个候选键中
(4)若X是LR类属性,则X可能包含在关系模式R的某个候选键中
1.L,N
2.(L,N)+=U
3.(L,N,LR)+=U
4.找出候选键