函数依赖及其公理/定理

一、函数依赖

1.1 函数依赖的定义

  • 函数依赖:设R(U)是属性集合U=\left \{ A_1,A_2,...,A_n \right \}上的一个关系模式,X,Y上U上的两个子集,若对R(U)的任意一个可能的关系r,r中不可能有两个元组满足在X中的属性值相等而在Y中的属性值不等,则称“X函数决定Y”或“Y函数依赖于X”,计作X\rightarrow Y
  • 示例

  • 函数依赖的特性
    • X\rightarrow Y,但Y\not\subset X,则称X\rightarrow Y为非平凡函数依赖
    • X\rightarrow Y,则任意两个元组,若X上值相等,则Y上值必然相等,则称X为决定因素
    • X\rightarrow YY\rightarrow X,则记作X\leftrightarrow Y
    • 若Y不函数依赖于X,则记作X \not\rightarrow Y
    • X\rightarrow Y,有基于模式R的,则要求对任意的关系r成立,有基于具体关系r的,则要求对某一关系r成立

    • 如一关系r的某属性集X,r中根本没有X上相等的两个元组存在,则X\rightarrow Y恒成立

二、完全函数依赖和传递函数依赖

2.1 部分函数依赖与完全函数依赖的定义

  • R(U)中,若X\rightarrow Y并且对于X的任何真子集X'都有X' \not\rightarrow Y,则称Y完全函数依赖于X,记为:X \overset{f}{\rightarrow} Y,否则称Y部分函数依赖于X,记为:X\overset{p}{\rightarrow} Y
  • 示例

2.2 传递函数依赖

  • R(U)中,若X\rightarrow YY\rightarrow ZY \not\subset XZ \not\subset YZ \not\subset XY \not\rightarrow X,则称Z传递函数依赖于X
  • 示例

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

3.1 候选键的定义

  • 候选键:设K为R(U)中的属性或属性组合,若K\overset{f}{\rightarrow} U,则称K为R(U)上的候选键。
  • 说明
    • 可任选一候选键作为R的主键
    • 包含在任一候选键中的属性称主属性,其他属性称非主属性
    • 若K是R的一个候选键,S\supset K,则称S为R的一个超键
  • 示例

3.2 外来键的定义

  • R(U)中的属性或属性组合X并非R的候选键,但X却是另一关系的候选键,则称X为R的外来键,简称外键

3.3 逻辑蕴涵的定义

  • 设F是关系模式R(U)中的一个函数依赖集合,X,Y是R的属性子集,如果从F中的函数依赖能够推导出X\rightarrow Y,则称F逻辑蕴涵X\rightarrow Y,或称X\rightarrow Y是F的逻辑蕴涵。记作:F\models X\rightarrow Y
  • 说明
    • 设F是关系模式R(U)的函数依赖集合,X\rightarrow Y是一个函数依赖,若对R中的每个满足F的关系r,能够用形式逻辑推理的方法推出r也满足X\rightarrow Y,则称F\models X\rightarrow Y
    • 若满足F的每个关系均满足X\rightarrow Y,则说F逻辑蕴涵X\rightarrow Y

3.4 闭包的定义

  • 被F逻辑蕴涵的虽哦有函数依赖集合称为F的闭包,记作:F^{+}
  • 说明
    • F^{+}=F,则说F是一个全函数依赖族(函数依赖完备集)。
  • 示例

四、关于函数依赖的公理和定理

4.1 函数依赖的Armstrong公理

  • R(U)是属性集U=\left \{ A_1,A_2,...,A_n \right \}上的一个关系模式,F为R(U)的一组函数依赖,记为:R(U,F),则有如下的规则成立:
    • [A1]自反律:若Y\subseteq X\subseteq U,则X\rightarrow Y被F逻辑蕴涵。
    • [A2]增广律:若X\rightarrow Y\in F,且Z\subseteq U,则XZ\rightarrow YZ被F逻辑蕴涵。
    • [A3]传递律:若X\rightarrow Y\in F,且Y\rightarrow Z,则X\rightarrow Z被F逻辑蕴涵。
  • [引理1]Armstrong's Axiom规则A1, A2, A3是有效的(正确的)。
  • [引理2]由Armstrong‘s Axiom可推出如下结论:
    • 合并律:若X\rightarrow YX\rightarrow Z,则X\rightarrow YZ
    • 伪传递律:若X\rightarrow YWY\rightarrow Z,则XW\rightarrow Z
    • 分解律:若X\rightarrow YZ\subseteq Y,则X\rightarrow Z
  • [引理3]如果A_1,A_2,...A_3是属性,则X\rightarrow A_1,A_2,...,A_n当且仅当对每个A_iX\rightarrow A_i(1\leq i\leq n)

4.2 属性闭包

  • R\left ( U,F \right )X\subseteq UU=\left \{ A_1,A_2,...,A_n \right \},令:

  • X_{F}^{+}为X关于F的属性(集)闭包
  • 注:显然X\subseteq X_{F}^{+}
  • [引理4]:X\rightarrow Y可从F由Armstrong Axiom导出,当且仅当Y\subseteq X_F^{+}

五、函数依赖集的最小覆盖

5.1 覆盖的概念

  • R(U)上的两个函数依赖集合F、G,如果F^{+}=G^+,则称F和G是等价的,也称F覆盖G或G覆盖F。
  • [引理5]:F^+=G^+\Leftrightarrow F\subseteq G^+\wedge G\subseteq F^+

5.2 属性闭包的计算算法

  • 计算一属性集关于一组函数依赖的属性闭包
  • Input:有限属性集合U,U上的函数依赖集合F,及U的子集X
  • Output:X关于F的属性闭包X^+,记为X_{F}^{+}
  • Method:按下列规则递归计算属性序列X^{(0)},X^{(1)},...
    • X^{(0)}=X,i=0
    • B=\left \{ A\mid (\exists V)(\exists W)(V\rightarrow W\in F\wedge V\subseteq X^{(i)}\wedge A\subseteq W) \right \}
    • X^{(i+1)}=B\cup X^{(i)}
    • if X^{(i+1)}\neq X^{(i)} then i=i+1;goto 2
    • X_F^+=X^{(i)},算法终止
  • 示例

5.3 函数依赖集的性质

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

5.4 最小覆盖

  • 若F满足以下条件,则称F为最小覆盖或最小依赖集
    • F中每个函数依赖的右部都是单个属性
    • 对任何X\rightarrow A\in F,有F-\left \{ X\rightarrow A \right \}不等价于F
    • 对任何X\rightarrow A\in FZ\subset X\left ( F-\left \{ X\rightarrow A \right \} \right )\cup \left \{ Z\rightarrow A \right \}不等价于F
  • [定理]:每个函数依赖集F都有等价的最小覆盖F^{+}​​​​​​​
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值