9.2 函数依赖
9.2.1 基本概念
函数是我们非常熟悉的概念,对公式:Y=f(X),自然也不会陌生,但是大家熟悉的是X和Y在数量上的对应关系,即给定一个X值,都会有一个Y值和它对应。
9.2.2 一些术语和符号
- 如果
,但Y不包含与X,则称
是非平凡的函数依赖。如果不做特别说明,我们讨论的都是非平凡函数依赖。
- 如果Y不函数依赖于X,则记作
。
- 如果
,则称为决定因子。
- 如果
,并且
,记作
。
- 如果
,并且对于X的一个任意真子集X'都有
,则称Y完全函数依赖于X,记作
;如果
成立,则称Y部分函数依赖于X,记作
。
- 如果
(非平凡函数依赖,并且
)、
,则称Z传递函数依赖于X。
- 设K为关系模式R的一个属性或属性组,若满足:
则称K为关系模式R的候选键(或候选码)。称包含在候选键中的属性为主属性,不包含在任何候选码中的属性称为非主属性。
9.2.3 函数依赖的推理
1.Armstrong公理
(1)自反律
若,则
在R上成立。即一组属性函数决定它的所有子集。
(2)增广律
若在R上成立,则
,则
在R上也成立。
(3)传递律
若和
在R上成立,则
在R上也成立。
2.Armstrong公理推论
(1)合并规则
若 和
在R上成立,则
在R上也成立。
(2)分解规则
若和
在R上也成立,则
在R上也成立。
(3)伪传递规则
若和
在R上也成立,则
在R上也成立。
(4)复合规则
若和
在R上也成立,则
在R上也成立。
9.2.4 闭包级候选键求解方法
1、函数依赖集的闭包
在关系模式R(U,F)中,U是R的属性全集,F是R上的一组函数依赖。
2.属性集闭包
设有关系模式R(U,F)中,U是R的属性全集,F是R上的一组函数依赖,X是U的一个子集()。
3.候选键的求解方法
L类:仅出现在函数依赖左部的属性。
R类:仅出现在函数依赖右部的属性。
N类:在函数依赖的左部和右部均不出现的属性。
LR类:在函数依赖的左部和右部均出现的属性。
①只在右边出现的属性,不属于候选码;
②只在左边出现的属性,一定存在于某候选码当中;
③左右都不出现的属性一定存在于任何候选码当中;
④其他属性逐个与2,3的属性组合,求属性闭包,若闭包等于U,则为候选码。