如何用Armstrong公理证明AG为给定关系模式的超键
证明AG为关系R的超键(基于Armstrong公理)
结论前置
可以推导出和G相关的有效结论,核心基于Armstrong公理的自反律,不需要依赖给定函数依赖集F中显式包含G的依赖项,具体推导过程如下:
1. 用到的Armstrong公理规则说明
- 自反律:若属性集Y是属性集X的子集,则必然有
X→Y成立,该规则为内置公理,不依赖给定的函数依赖集F - 增广律:若
X→Y成立,Z为任意属性集,则XZ→YZ成立 - 传递律:若
X→Y、Y→Z成立,则X→Z成立
2. 计算AG的属性闭包(AG)+
超键的判定规则是:若属性集的闭包包含关系的全部属性,则该属性集为超键,因此我们计算(AG)+验证:
- 初始化闭包集合:根据自反律,
AG→A、AG→G,因此初始闭包为{A, G} - 应用F中的
A→BCD规则:结合增广律可得AG→BCD,将B、C、D加入闭包,此时闭包为{A, B, C, D, G} - 应用F中的
BC→DE规则:当前闭包已包含B、C,因此可得AG→DE,将E加入闭包,此时闭包为{A, B, C, D, E, G}
3. 超键判定
此时(AG)+已经覆盖关系R的全部6个属性,因此AG是R的超键。
G相关可推导结论补充
除上述证明用到的依赖外,基于给定F可推导的G相关结论仅包括:
- 任意包含G的属性集X,都满足
X→G(由自反律直接推导) - 不存在不包含G的属性集X,能推导出
X→G:因为F中所有依赖的右部都不含G,闭包推导过程中永远不会将G加入不包含G的属性集的闭包中 - G本身无法决定除自身外的任何其他属性:G的闭包
(G)+ = {G}
内容的提问来源于stack exchange,提问作者Encipher
相关产品推荐
相关产品推荐

