【数据库系统】函数依赖及其公理定理(2) Armstrong公理

1 .关于函数依赖的公理 Armstrong公理A1~A3

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

  • [A1]自反律(Reflexivity rule):若Y⊆X⊆U(Y是X的一部分), 则X→Y被F逻辑蕴涵(也就是X→Y恒成立),这条公理表示一个属性组可以决定它自身的每一个属性。
  • [A2]增广律(Augmentation rule):若X→Y∈F, 且Z∈U(说明Z是U上的一个属性或属性组), 则XZ→YZ(在X→Y两端个加上一个Z)被F逻辑蕴涵
  • [A3]传递律(Transtivity rule):若X→Y∈F, 且Y→Z, 则X→Z被F逻辑
    蕴涵。

这三条公理的作用是用已知的函数依赖推出求隐含的函数依赖

证明:
在这里插入图片描述

1.1 Armstrong公理导出的引理

  • (a)合并律(Union Rule):若X→Y且X→Z, 则X →YZ。
  • (b)伪传递律(Pseudo Transitivity):若X→Y且WY→Z(其实就是把WY换成WX就可以了), 则XW→Z。
  • ©分解律(Decomposition Rule):若X→Y且Z⊆Y, 则X→Z。

[引理3]如果 A 1 , A 2 , … , A n A_1,A_2,…,A_n A1,A2,,An是属性,则 X → A 1 , A 2 , … , A n X→A_1,A_2,…,A_n XA1,A2,,An 当且仅当对每个 A i A_i Ai X → A i ( 1 ≤ i ≤ n ) X→Ai(1≤ i ≤ n) XAi(1in)

这条引理说明了属性组合的函数依赖与单一属性的函数依赖的关系

2. 属性(集)闭包

前面说的闭包是函数依赖集的闭包,这里说的是属性(集)闭包

R ( U , F ) , X ⊆ U , U = R(U, F), X⊆U, U = R(U,F),XU,U= { A 1 , A 2 , … , A n A_1,A_2,…,A_n A1,A2,,An}, 令:
X F + X^+_F XF+ = { A i A_i Ai | 用Armstrong 公理 A 1 , A 2 , A 3 A1,A2,A3 A1,A2,A3可从 F F F导出 X → A i X→ A_i XAi }(从公理可以推出 X X X决定的所有单一属性的集合)
这里称 X F + X^+_F XF+ X X X关于 F F F的属性(集)闭包。
显然 X ⊆ X F + X⊆X^+_F XXF+

这个定义的你有毒就是如何判断一个 X → Y X→Y XY(一个函数依赖)是否属于一个函数依赖集,只需要判断 Y ⊆ X F + Y⊆X^+_F YXF+即可
X → Y X→Y XY,当且仅当 Y ⊆ X F + Y⊆X^+_F YXF+

3.函数依赖集的最小覆盖

3.1 覆盖

R ( U ) R(U) R(U)上的两个函数依赖集合 F 、 G F、G FG, 如果 F + = G + F^+= G^+ F+=G+,则称 F F F G G G是等价的,也称F覆盖G或者G覆盖F。
在这里插入图片描述

3.2 计算一属性集关于一组函数依赖的属性闭包

I n p u t : 有 限 属 性 集 合 U , U 上 的 函 数 依 赖 集 合 F , 及 U 的 子 集 X Input:有限属性集合U, U上的函数依赖集合F, 及U的子集X InputU,UF,UX
O u t p u t : X 关 于 F 的 属 性 闭 包 X + , 记 为 X F + Output:X关于F的属性闭包X^+ , 记为X^+_F OutputXFX+,XF+
M e t h o d : 按 下 列 规 则 递 归 计 算 属 性 序 列 X 0 , X 1 Method:按下列规则递归计算属性序列X^0, X^1 MethodX0,X1,…

流程:

  1. 令 X 0 = X , i = 0 令X^0=X, i=0 X0=X,i=0
  2. B B B = { A ∣ ( ∃ V ) ( ∃ W ) ( V → W ∈ F ∩ V ⊆ X i ∩ A ⊆ W ) A|(∃V)(∃W)(V→W∈F ∩ V⊆X^i ∩ A⊆W) A(V)(W)(VWFVXiAW)}(如果V中的属性都是之前已经求出来的属性闭包中的元素 ,那么W就是我要求的属性集合)
  3. X i + 1 = B ∪ X i X^{i+1} =B∪X^i Xi+1=BXi(将刚刚求出来的集合加入)
  4. i f ( X i + 1 ! = X i ) if(X^{i+1}! =X^i) if(Xi+1!=Xi)(当没有变化的时候)
  5. ___ t h e n then then i = i + 1 i=i+1 i=i+1
  6. ___ g o t o goto goto 2 2 2
  7. X F + = X i X^+_F=X^{i} XF+=Xi算法终止

示例:
在这里插入图片描述

3.3 最小覆盖

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

用公式表达即为:6, G G G = { X → A ∣ X → Y ∈ F ∩ A ∈ Y X→A | X→Y ∈F ∩A∈Y XAXYFAY }
这里,比如 X → Y X→Y XY,X中可能有很多属性,Y中也可能会有很多属性,如果我们把Y拆成单一的一个个属性,设为A,即有 X → A X→A XA

[定义] 若F满足以下条件,则称F为最小覆盖(minimal Cover)或最小依赖集

  1. F中每个函数依赖( X → Y X→Y XY)的右部( Y Y Y)是单个属性;(单一属性)
  2. 对任何 X → A ∈ F X→A∈F XAF , 有 F − F- F{ X → A X→A XA }不等价于F;(说明每个函数依赖 X → A X→A XA是不可或缺的 )
  3. 对任何 X → A ∈ F , Z ⊆ X , ( F − X→A∈F, Z⊆X, ( F- XAF,ZX,(F{ X → A X→A XA })∪{ Z → A Z→A ZA}不等价于F (说明 X → A X→A XA中的左端 X X X 没有多余的属性,公式中Z是X的真子集)

每个函数依赖集 F F F都有等价的最小覆盖 F ‘ F‘ F
怎么求最小依赖?
在这里插入图片描述

为什么要求最小覆盖?
这个和后面的模式分解有关系

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值