一、函数依赖
1.1 函数依赖的定义
- 函数依赖:设
是属性集合
上的一个关系模式,X,Y上U上的两个子集,若对
的任意一个可能的关系r,r中不可能有两个元组满足在X中的属性值相等而在Y中的属性值不等,则称“X函数决定Y”或“Y函数依赖于X”,计作
- 示例
- 函数依赖的特性
- 对
,但
,则称
为非平凡函数依赖
- 若
,则任意两个元组,若X上值相等,则Y上值必然相等,则称X为决定因素
- 若
,
,则记作
- 若Y不函数依赖于X,则记作
-
,有基于模式R的,则要求对任意的关系r成立,有基于具体关系r的,则要求对某一关系r成立
-
如一关系r的某属性集X,r中根本没有X上相等的两个元组存在,则
恒成立
- 对
二、完全函数依赖和传递函数依赖
2.1 部分函数依赖与完全函数依赖的定义
- 在
中,若
并且对于X的任何真子集X'都有
,则称Y完全函数依赖于X,记为:
,否则称Y部分函数依赖于X,记为:
- 示例
2.2 传递函数依赖
- 在
中,若
,
且
,
,
,
,则称Z传递函数依赖于X
- 示例
三、函数依赖相关的几个重要概念
3.1 候选键的定义
- 候选键:设K为
中的属性或属性组合,若
,则称K为
上的候选键。
- 说明
- 可任选一候选键作为R的主键
- 包含在任一候选键中的属性称主属性,其他属性称非主属性
- 若K是R的一个候选键,
,则称S为R的一个超键
- 示例
3.2 外来键的定义
- 若
中的属性或属性组合X并非R的候选键,但X却是另一关系的候选键,则称X为R的外来键,简称外键
3.3 逻辑蕴涵的定义
- 设F是关系模式
中的一个函数依赖集合,X,Y是R的属性子集,如果从F中的函数依赖能够推导出
,则称F逻辑蕴涵
,或称
是F的逻辑蕴涵。记作:
。
- 说明
- 设F是关系模式
的函数依赖集合,
是一个函数依赖,若对R中的每个满足F的关系r,能够用形式逻辑推理的方法推出r也满足
,则称
。
- 若满足F的每个关系均满足
,则说F逻辑蕴涵
。
- 设F是关系模式
3.4 闭包的定义
- 被F逻辑蕴涵的虽哦有函数依赖集合称为F的闭包,记作:
。
- 说明
- 若
,则说F是一个全函数依赖族(函数依赖完备集)。
- 若
- 示例
四、关于函数依赖的公理和定理
4.1 函数依赖的Armstrong公理
- 设
是属性集
上的一个关系模式,F为
的一组函数依赖,记为:
,则有如下的规则成立:
- [A1]自反律:若
,则
被F逻辑蕴涵。
- [A2]增广律:若
,且
,则
被F逻辑蕴涵。
- [A3]传递律:若
,且
,则
被F逻辑蕴涵。
- [A1]自反律:若
- [引理1]Armstrong's Axiom规则A1, A2, A3是有效的(正确的)。
- [引理2]由Armstrong‘s Axiom可推出如下结论:
- 合并律:若
且
,则
。
- 伪传递律:若
且
,则
。
- 分解律:若
且
,则
。
- 合并律:若
- [引理3]如果
是属性,则
当且仅当对每个
有
。
4.2 属性闭包
- 对
,
,
,令:
- 称
为X关于F的属性(集)闭包
- 注:显然
- [引理4]:
可从F由Armstrong Axiom导出,当且仅当
五、函数依赖集的最小覆盖
5.1 覆盖的概念
- 对
上的两个函数依赖集合F、G,如果
,则称F和G是等价的,也称F覆盖G或G覆盖F。
- [引理5]:
5.2 属性闭包的计算算法
- 计算一属性集关于一组函数依赖的属性闭包
- Input:有限属性集合U,U上的函数依赖集合F,及U的子集X
- Output:X关于F的属性闭包
,记为
- Method:按下列规则递归计算属性序列
- 令
- if
then i=i+1;goto 2
,算法终止
- 令
- 示例
5.3 函数依赖集的性质
- [引理6]每个函数依赖集F可被一个其右端至多有一个属性的函数依赖之集 G覆盖。
5.4 最小覆盖
- 若F满足以下条件,则称F为最小覆盖或最小依赖集
- F中每个函数依赖的右部都是单个属性
- 对任何
,有
不等价于F
- 对任何
,
,
不等价于F
- [定理]:每个函数依赖集F都有等价的最小覆盖