使用Armstrong公理推导非平凡函数依赖AD→E、CD→E求助
函数依赖问题解答
一、概念疑问解答
1. 推导AD→E、CD→E的含义
原始函数依赖集F中的依赖确实都是非平凡的,但AD→E、CD→E并不属于F的原始依赖集合。题目要求的是仅使用Armstrong公理体系的规则,从F的已知依赖出发,一步步严谨推导出这两个新的依赖,不能直接通过计算属性闭包等方式直接给出结果,每一步推导都必须对应明确的公理规则。
2. 非平凡依赖的定义
对于函数依赖X→Y,如果Y不包含于X,就称该依赖为非平凡函数依赖。反之如果Y是X的子集,就是平凡函数依赖,平凡依赖是恒成立的,不携带额外的约束信息,所以题目要求推导的是有实际业务约束意义的非平凡依赖。
二、推导步骤
首先明确Armstrong公理的基础规则和常用导出规则(导出规则可由基础规则推导得到,推导过程中可直接使用):
- 自反律:若Y⊆X,则X→Y
- 增广律:若X→Y,则对任意属性集Z,都有XZ→YZ
- 传递律:若X→Y且Y→Z,则X→Z
- 分解规则(导出):若X→YZ,则X→Y且X→Z
推导AD→E
- 从F中取已知依赖
A→BC,应用分解规则得到A→B - 对
A→B应用增广律,两边同时增加属性D,得到AD→BD - 从F中取已知依赖
BD→E - 对
AD→BD和BD→E应用传递律,得到AD→E
验证:E不属于AD的属性集合,因此该依赖为非平凡依赖,推导有效。
推导CD→E
- 从F中取已知依赖
CD→AB,应用分解规则得到CD→B - 对
CD→B应用增广律,两边同时增加属性D,得到CD→BD(左边CD∪D=CD,右边B∪D=BD) - 从F中取已知依赖
BD→E - 对
CD→BD和BD→E应用传递律,得到CD→E
验证:E不属于CD的属性集合,因此该依赖为非平凡依赖,推导有效。
内容的提问来源于stack exchange,提问作者Encipher
相关产品推荐
相关产品推荐

