文章目录
4.4 函数依赖及其公理和定理
- 基本内容
- 函数依赖
- 完全函数依赖与传递函数依赖
- 关于函数依赖的公理和定理
- 函数依赖集的最小覆盖
- 重点与难点
- 一组概念:函数依赖、部分函数依赖和完全函数依赖、传递函数依赖、 候选键、非主属性、逻辑蕴涵、闭包、属性闭包、覆盖、最小覆盖等
- 关于函数依赖的公理和定理,相关的证明
- 求属性闭包的算法、求最小覆盖的算法
4.4.1 函数依赖
-
函数依赖的定义
-
设 是属性集合 上的一个关系模式, 是 上的两个子 集,
若对 的任意一个可能的关系 , 中不可能有两个元组满足在 中的属性值相等而在 中的属性值不等,则称 “X函数决定Y” 或 “Y函数依赖于X”, 记作
-
示例1
注:函数依赖的分析取决于对问题领域的限定和分析,取决于对业务规则的正确理解。例 如:问题领域中,学生是没有重名的,则有:“年龄”和“家庭住址”都函数依赖于“姓 名”。而在另一个问题领域中,学生是有重名的,则上述函数依赖是不成立的。
-
示例2
-
-
-
函数依赖的特性
- 对 ,但 , 则称 为 非平凡的函数依赖;
- 若 ,则任意两个元组,若 上值相等,则 上值必然相等, 则称 为决定因素;
- 若 ,, 则记作 ;
- 若 不函数依赖于 ,则记作 ;
- ,有基于模式 的,则要求对任意的关系 成立;有基于具体关系 的,则要求对某一关系 成立;
- 如一关系 的某属性集 , 中根本没有 上相等的两个元组存在,则 恒成立;
-
函数依赖的提取练习
分析下列属性集上的函数依赖
-
KaTeX parse error: Expected 'EOF', got '' at position 7: 学生(学号,̲姓名,班级,课号,课程名,成…
- ; ;
-
KaTeX parse error: Expected 'EOF', got '' at position 8: 客户(客户号,̲客户名称,类别,联系电话,…
-
4.4.2 部分 and 完全函数依赖
-
部分 and 完全函数依赖定义
在 中,若 并且对于 的任何真子集 都有 , 则称 完全函数依赖于 , 记为:, 否则称 部分函数依赖于 (存在非受控冗余), 记为:
-
示例
KaTeX parse error: Expected 'EOF', got '' at position 2: U̲={学号,姓名,年龄,班号,…
KaTeX parse error: Expected 'EOF', got '' at position 27: …\rightarrow^{f}̲U
KaTeX parse error: Expected 'EOF', got '' at position 11: \{学号, 课号\}̲\rightarrow^{p}…
-
-
部分 and 完全函数依赖练习
-
KaTeX parse error: Expected 'EOF', got '' at position 7: 学生(学号,̲姓名,班级,课号,课程名…
- ,但
-
KaTeX parse error: Expected 'EOF', got '' at position 8: 员工(员工码,̲姓名,出生日期,联系电话,…
- KaTeX parse error: Expected 'EOF', got '' at position 30: …\rightarrow^{f}̲U
- KaTeX parse error: Expected 'EOF', got '' at position 30: …\rightarrow^{p}̲\{姓名, 出生日期\}
-
KaTeX parse error: Expected 'EOF', got '' at position 7: 学生(学号,̲姓名,班级,课号,课程名…
4.4.3 传递函数依赖
-
传递函数依赖定义
在 中,若 且 , , 则称 传递函数依赖于 。
传递依赖存在着非受控冗余
-
示例
KaTeX parse error: Expected 'EOF', got '' at position 2: U̲={学号,姓名,年龄,班号,…
- ,
- 注:“班长” 是传递依赖与 “学号” 的
-
传递函数依赖练习
-
KaTeX parse error: Expected 'EOF', got '' at position 7: 商店(商店,̲商品,商品经营部,经营部经…
- KaTeX parse error: Expected 'EOF', got '' at position 6: \{商店,̲商品\} \rightarro…, KaTeX parse error: Expected 'EOF', got '' at position 6: \{商店,̲商品经营部\} \righta…
- KaTeX parse error: Expected 'EOF', got '' at position 6: \{商店,̲商品\}\rightarro…
-
KaTeX parse error: Expected 'EOF', got '' at position 8: 员工(员工码,̲姓名,部门,部门经理)
- ,
-
KaTeX parse error: Expected 'EOF', got '' at position 7: 商店(商店,̲商品,商品经营部,经营部经…
4.4.4 函数依赖相关的几个重要概念
-
候选码 / 候选码
设 为 中的属性或属性组合,若 , 则称 为 上的
候选键 (Candidate Key)说明:
- 可任选一候选键作为 的
主键(Primary Key); - 包含 在任一候选键中的属性 称
主属性(Prime Attribute),其他属性称非主属性; - 若 是 的一个候选键,, 则称 为 的一个
超键(Super Key)。
- 可任选一候选键作为 的
-
外来键 / 外键
若 中的属性或属性组合 并非 的候选键,但 却是另一关系的候选键, 则称 为 的
外来键(Foreign Key),简称外键。 -
逻辑蕴涵
设 是关系模式 中的一个函数依赖集合, 是 的属性子集,如果从 中的函数依赖能够推导出,则称 逻辑蕴涵 , 或称 是 的逻辑蕴涵。记作
。
说明:
- 设 是关系模式 的函数依赖集, 是一个函数依赖,若对 中的每个满足 的关系 , 能够用形式逻辑推理的方法推出 也满足 ,则称
。
- 若满足 的每个关系均满足 ,则说 逻辑蕴涵
- 设 是关系模式 的函数依赖集, 是一个函数依赖,若对 中的每个满足 的关系 , 能够用形式逻辑推理的方法推出 也满足 ,则称
-
闭包
被 逻辑蕴涵的所有函数依赖集合称为 的
闭包(Closure),记作 。 包含了平凡的函数依赖。说明:
若 , 则说 是一个
全函数依赖族(函数依赖完备集)示例
设 KaTeX parse error: Expected 'EOF', got '' at position 7: R=ABC,̲F={A \rightarro…,则 的组成如下,即由如下形式的 构成:
- 包含 ,而 任意,如 KaTeX parse error: Expected 'EOF', got '' at position 21: …rightarrow AB,̲A \rightarrow C…
- 包含 但不含 且 不含 ,如 $BC \rightarrow B,B \rightarrow C,B \rightarrow $∅
- 是 或 ∅
4.4.5 关于函数依赖的公理和定理
-
函数依赖的Armstrong公理
设 是属性集 上的一个关系模式, 为 的一组函数依赖,记为 , 则有如下规则成立:
- [A1]自反律(Reflexivity rule):
若 , 则 被 逻辑蕴涵。
-
[A2]增广律(Augmentation rule):
若 , 且 , 则 被 逻辑蕴涵。
-
[A3]传递律(Transtivity rule):
若 , 且 , 则 被 逻辑蕴涵。
公理的作用是 由已知的函数依赖推导出隐含的函数依赖。
-
函数依赖的Armstrong公理的正确性证明
-
[引理1]Armstrong’s Axiom规则A1, A2, A3是有效的(正确的)。
-
[引理2]由Armstrong‘s Axiom可推出如下结论:
- (a) 合并律(Union Rule):若 且 , 则 。
- (b) 伪传递律(Pseudo Transitivity):若 且 , 则 。
- © 分解律(Decomposition Rule):若 且 , 则
-
[引理3]如果 是属性,则 当且仅当对每个 有 。
证明略
-
-
属性(集)闭包
对 , 令:
用Armstrong Axiom A1,A2,A3 可从 导出 称 为 关于 的
属性(集)闭包。注:显然
-
[引理4] 可从 由Armstrong Axiom导出,当且仅当 。
-
-
Armstrong公理的完备性及其证明
[定理]Armstrong Axiom A1,A2,A3是有效的和完备的。
证明略
4.4.6 函数依赖集的最小覆盖
-
覆盖的概念
对 上的两个函数依赖集合 , , 如果 ,则称 和 是等价的,也称F覆盖G或者G覆盖F
-
[引理5]:
-
-
属性闭包的计算算法
- [定理]Algorithm正确地计算了
[Algorithm] 计算一属性集关于一组函数依赖的属性闭包。
Input:有限属性集合 , 上的函数依赖集合 , 及 的子集
Output: 关于 的属性闭包 , 记为 。
Method:按下列规则递归计算属性序列
- 令
- If then 2.
- , 算法终止。
示例:
-
函数依赖集的性质
[引理6]每个函数依赖集 可被一个其右端至多有一个属性的函数依赖之集 覆盖。
-
最小覆盖
若 满足以下条件,则称 为
最小覆盖(minimal Cover)或最小依赖集 (minimal set of Functional Depandency):- 中每个函数依赖的右部是单个属性;
- 对任何 , 有 不等价于 ;
- 对任何 不等价于。
[定理]:每个函数依赖集 都有等价的最小覆盖 。