4.4 函数依赖及其公理和定理

  • 基本内容
    • 函数依赖
    • 完全函数依赖与传递函数依赖
    • 关于函数依赖的公理和定理
    • 函数依赖集的最小覆盖
  • 重点与难点
    • 一组概念:函数依赖、部分函数依赖和完全函数依赖、传递函数依赖、 候选键、非主属性、逻辑蕴涵、闭包、属性闭包、覆盖、最小覆盖等
    • 关于函数依赖的公理和定理,相关的证明
    • 求属性闭包的算法、求最小覆盖的算法

目录

4.4.1 函数依赖

  • 函数依赖的定义

    • R(U)R(U) 是属性集合 U={A1,A2,,An}U=\{A_1,A_2,…,A_n\}上的一个关系模式,X,YX, YUU 上的两个子 集,

      若对 R(U)R(U) 的任意一个可能的关系 rr , rr 中不可能有两个元组满足XX 中的属性值相等而在 YY 中的属性值不等,则称 “X函数决定Y”“Y函数依赖于X”, 记作 XYX \rightarrow Y

    • 示例1

      U=U = {学号,姓名,年龄,班号,班长,课号,成绩}

      ,学号 \rightarrow {姓名, 年龄}

      班号 \rightarrow 班长

      ,{学号, 课号} \rightarrow 成绩

      :函数依赖的分析取决于对问题领域的限定和分析,取决于对业务规则的正确理解。例 如:问题领域中,学生是没有重名的,则有:“年龄”和“家庭住址”都函数依赖于“姓 名”。而在另一个问题领域中,学生是有重名的,则上述函数依赖是不成立的。

    • 示例2

      [数据库] 4.4 函数依赖及其公理和定理-

  • 函数依赖的特性

    • XYX \rightarrow Y,但 Y⊄XY \not\subset X, 则称 XYX \rightarrow Y非平凡的函数依赖
    • XYX \rightarrow Y,则任意两个元组,若 XX 上值相等,则 YY 上值必然相等, 则称 XX决定因素
    • XYX \rightarrow YYXY \rightarrow X, 则记作 XYX \leftarrow \rightarrow Y
    • YY 不函数依赖于 XX ,则记作 X↛YX \not\rightarrow Y
    • XYX \rightarrow Y,有基于模式 RR 的,则要求对任意的关系 rr 成立;有基于具体关系 rr 的,则要求对某一关系 rr 成立;
    • 如一关系 rr 的某属性集 XX, rr 中根本没有 XX 上相等的两个元组存在,则 XYX \rightarrow Y 恒成立;
  • 函数依赖的提取练习

    分析下列属性集上的函数依赖

    • KaTeX parse error: Expected 'EOF', got '' at position 7: 学生(学号,̲姓名,班级,课号,课程名,成…

      • {,}学号 \rightarrow \{姓名, 班级\} ; 课程号 \rightarrow 课程名; {,}\{学号, 课号\} \rightarrow 成绩
      • 教师 \rightarrow 教师职务
      • {,}\{班级, 课号\} \rightarrow 教师
    • KaTeX parse error: Expected 'EOF', got '' at position 8: 客户(客户号,̲客户名称,类别,联系电话,…

      • {,}客户号 \rightarrow \{客户名称, 类别\}
      • 产品编号 \rightarrow 产品名称
      • {,,}\{客户号, 产品编码, 要货日期\} \rightarrow 数量

目录




4.4.2 部分 and 完全函数依赖

  • 部分 and 完全函数依赖定义

    R(U)R(U) 中,若 XYX \rightarrow Y 并且对于 XX 的任何真子集 XX'都有 X↛YX' \not\rightarrow Y, 则称 YY 完全函数依赖于 XX , 记为:XfYX \rightarrow^{f} Y, 否则称 YY 部分函数依赖于 XX (存在非受控冗余), 记为:XpYX \rightarrow^{p} Y

    • 示例

      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}…

      {,}f\{学号, 课号\} \rightarrow^{f} 成绩

      [数据库] 4.4 函数依赖及其公理和定理

  • 部分 and 完全函数依赖练习

    • KaTeX parse error: Expected 'EOF', got '' at position 7: 学生(学号,̲姓名,班级,课号,课程名…
      • {,}fU\{学号, 课号\} \rightarrow^{f} U,但 {,}p\{学号, 课号\} \rightarrow^{p} 姓名
      • {,}p\{学号, 课号\} \rightarrow^{p} 课程名
    • 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}̲\{姓名, 出生日期\}

目录




4.4.3 传递函数依赖

  • 传递函数依赖定义

    R(U)R(U) 中,若 XY,YZX \rightarrow Y, Y \rightarrow ZY⊄X,Z⊄Y,Z⊄XY \not\subset X, Z \not\subset Y, Z \not\subset X, Y↛XY \not\rightarrow X, 则称 ZZ 传递函数依赖于 XX

    传递依赖存在着非受控冗余

  • 示例

    KaTeX parse error: Expected 'EOF', got '' at position 2: U̲={学号,姓名,年龄,班号,…

    • 学号 \rightarrow 班号, 班号 \rightarrow 班长
    • 学号 \rightarrow 班长
    • 注:“班长” 是传递依赖与 “学号” 的
  • 传递函数依赖练习

    • 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: 员工(员工码,̲姓名,部门,部门经理)
      • 员工码 \rightarrow 部门, 部门 \rightarrow 部门经理
      • 员工码 \rightarrow 部门经理

目录




4.4.4 函数依赖相关的几个重要概念

  • 候选码 / 候选码

    KKR(U)R(U) 中的属性属性组合,若 KfUK \rightarrow^{f} U, 则称 KKR(U)R(U) 上的候选键 (Candidate Key)

    说明:

    • 可任选一候选键作为 RR主键(Primary Key)
    • 包含 在任一候选键中的属性主属性(Prime Attribute) ,其他属性称非主属性
    • KKRR 的一个候选键,SKS \supset K, 则称 SSRR 的一个超键(Super Key)
  • 外来键 / 外键

    R(U)R(U) 中的属性或属性组合 XX 并非 RR 的候选键,但 XX 却是另一关系的候选键, 则称 XXRR外来键(Foreign Key),简称外键

  • 逻辑蕴涵

    FF 是关系模式 R(U)R(U) 中的一个函数依赖集合,X,YX, YRR 的属性子集,如果从 FF 中的函数依赖能够推导出XYX \rightarrow Y,则称 FF 逻辑蕴涵 XYX \rightarrow Y, 或称 XYX \rightarrow YFF 的逻辑蕴涵。记作 FF [数据库] 4.4 函数依赖及其公理和定理XYX \rightarrow Y

    说明:

    • FF 是关系模式 R(U)R(U) 的函数依赖集, XYX \rightarrow Y 是一个函数依赖,若对 RR 中的每个满足 FF 的关系 rr, 能够用形式逻辑推理的方法推出 rr 也满足 XYX \rightarrow Y,则称 FF [数据库] 4.4 函数依赖及其公理和定理XYX \rightarrow Y
    • 若满足 FF 的每个关系均满足 XYX \rightarrow Y,则说 FF 逻辑蕴涵 XYX \rightarrow Y
  • 闭包

    FF 逻辑蕴涵的所有函数依赖集合称为 FF闭包(Closure),记作 F+F^+。 包含了平凡的函数依赖。

    说明:

    F+=FF^+=F, 则说 FF 是一个 全函数依赖族(函数依赖完备集)

    示例

    KaTeX parse error: Expected 'EOF', got '' at position 7: R=ABC,̲F={A \rightarro…,则 F+F^+ 的组成如下,即由如下形式的 XYX \rightarrow Y 构成:

    • XX 包含 AA,而 YY 任意,如 KaTeX parse error: Expected 'EOF', got '' at position 21: …rightarrow AB,̲A \rightarrow C…
    • XX 包含 BB 但不含 AAYY 不含 AA,如 $BC \rightarrow B,B \rightarrow C,B \rightarrow $∅​
    • XYX \rightarrow YCCC \rightarrow CCC \rightarrow

目录




4.4.5 关于函数依赖的公理和定理

  • 函数依赖的Armstrong公理

    R(U)R(U) 是属性集 U={A1,A2,,An}U=\{A_1,A_2,…,A_n\}上的一个关系模式,FFR(U)R(U) 的一组函数依赖,记为 R(U,F)R(U, F) , 则有如下规则成立:

    • [A1]自反律(Reflexivity rule)

    YXUY \subseteq X \subseteq U, 则 XYX \rightarrow YFF 逻辑蕴涵。

    • [A2]增广律(Augmentation rule)

      XYFX \rightarrow Y \in F, 且 ZUZ \subseteq U, 则 XZYZXZ \rightarrow YZFF 逻辑蕴涵。

    • [A3]传递律(Transtivity rule)

      XYFX \rightarrow Y \in F, 且 YZY \rightarrow Z, 则 XZX \rightarrow ZFF 逻辑蕴涵。

    公理的作用是 由已知的函数依赖推导出隐含的函数依赖。

  • 函数依赖的Armstrong公理的正确性证明

    • [引理1]Armstrong’s Axiom规则A1, A2, A3是有效的(正确的)。

      [数据库] 4.4 函数依赖及其公理和定理

    • [引理2]由Armstrong‘s Axiom可推出如下结论:

      • (a) 合并律(Union Rule):若 XYX \rightarrow YXZX \rightarrow Z, 则 XYZX \rightarrow YZ
      • (b) 伪传递律(Pseudo Transitivity):若 XYX \rightarrow YWYZWY \rightarrow Z, 则 XWZXW \rightarrow Z
      • © 分解律(Decomposition Rule):若 XYX \rightarrow YZYZ \subseteq Y, 则 XZX \rightarrow Z
      • [数据库] 4.4 函数依赖及其公理和定理
    • [引理3]如果 A1,A2,,AnA_1,A_2,…,A_n 是属性,则 XA1,A2,,AnX \rightarrow A_1,A_2,…,A_n 当且仅当对每个 AiA_iXAi(1in)X \rightarrow A_i(1 \leq i \leq n)

      证明略

  • 属性(集)闭包

    R(U,F),XU,U={A1,A2,,An}R(U, F) , X \subseteq U, U = \{A_1,A_2,…,A_n\}, 令:

    XF+={AiX^+_F= \{A_i | 用Armstrong Axiom A1,A2,A3 可从 FF 导出 XAi}X \rightarrow A_i\}XF+X^+_FXX 关于 FF属性(集)闭包

    :显然 XXF+X \subseteq X^+_F

    • [引理4] XYX \rightarrow Y 可从 FF 由Armstrong Axiom导出,当且仅当 XXF+X \subseteq X^+_F

      [数据库] 4.4 函数依赖及其公理和定理

  • Armstrong公理的完备性及其证明

    [定理]Armstrong Axiom A1,A2,A3是有效的和完备的。

    证明略

目录




4.4.6 函数依赖集的最小覆盖

  • 覆盖的概念

    R(U)R(U) 上的两个函数依赖集合 FF , GG , 如果 F+=G+F^+= G^+,则称 FFGG等价的,也称F覆盖G或者G覆盖F

    • [引理5]:F+=G+FG+GF+F^+ = G^+ \Leftrightarrow F \subseteq G^+ \wedge G \subseteq F^+

      [数据库] 4.4 函数依赖及其公理和定理

  • 属性闭包的计算算法

    • [定理]Algorithm正确地计算了 XF+X^+_F

    [Algorithm] 计算一属性集关于一组函数依赖的属性闭包。

    Input:有限属性集合 UU, UU 上的函数依赖集合 FF, 及 UU 的子集 XX

    Output:XX 关于 FF 的属性闭包 X+X^+ , 记为 XF+X^+_F

    Method:按下列规则递归计算属性序列 X(0),X(1),X^{(0)}, X^{(1)},…

    1. X(0)=X,i=0X^{(0)}=X, i=0
    2. B={A(V)(W)(VWFVX(i)AW)}B = \{A | (\exists V)(\exists W)(V \rightarrow W \in F \wedge V \subseteq X^{(i)} \wedge A \subseteq W)\}
    3. X(i+1)=BX(i)X^{(i+1)}=B \cup X^{(i)}
    4. If X(i+1)X(i)X^{(i+1)} \not= X^{(i)} then i=i+1;gotoi=i+1;goto 2.
    5. XF+=X(i)X^+_F= X^{(i)}, 算法终止。

    示例:

    [数据库] 4.4 函数依赖及其公理和定理

  • 函数依赖集的性质

    [引理6]每个函数依赖集 FF 可被一个其右端至多有一个属性的函数依赖之集 GG 覆盖。

    [数据库] 4.4 函数依赖及其公理和定理

  • 最小覆盖

    FF 满足以下条件,则称 FF最小覆盖(minimal Cover)最小依赖集 (minimal set of Functional Depandency)

    • FF 中每个函数依赖的右部是单个属性;
    • 对任何 XAFX \rightarrow A \in F, 有 F{XA}F - \{ X \rightarrow A\} 不等价于 FF
    • 对任何 XAF,ZX,(F{XA}){ZA}X \rightarrow A \in F, Z \subset X, (F - \{ X \rightarrow A\}) \sub \{Z \rightarrow A\}不等价于FF

    [定理]:每个函数依赖集 FF 都有等价的最小覆盖 FF'

    [数据库] 4.4 函数依赖及其公理和定理

目录




4.4.7 总结

[数据库] 4.4 函数依赖及其公理和定理

目录

相关文章:

  • 2021-04-02
  • 2021-12-12
  • 2021-05-22
  • 2021-07-21
  • 2022-12-23
  • 2021-09-01
  • 2021-08-20
  • 2021-06-29
猜你喜欢
  • 2021-08-29
  • 2021-12-02
  • 2021-12-05
  • 2022-03-04
  • 2021-08-18
  • 2021-08-25
相关资源
相似解决方案