我有R(A,B,C,D)和功能依赖性AB-> CD和A-> B我想知道或A-> C是否正确?
我试着通过强烈的公理找到F闭合:
AB->C (decomposition from AB->CD)
AB->D (decomposition from AB->CD)
AB->AB (reflexivity)
AB->A (decomposition from AB->AB)
AB->B (decomposition from AB->AB)
A->A
B->B
AB->ABCD (Union) <- candidate key
我觉得这不是我错过的全部?另外我觉得A-> C是正确的,因为AB-> C但我不确定。
答案 0 :(得分:1)
您可以通过两种不同的方式查看A → C
和AB → CD
是否可以导出A → B
:您可以尝试计算属性A
的关闭,用于计算一组属性的闭包的算法,并查看它是否包含C
(简单方法),或者您可以通过应用Armstrong公理(更难的方式)推导出它的证明。
让我们先轻松一点:
A+ = A (starting point)
A+ = AB (by using A → B)
A+ = ABCD (by using AB → CD)
因此,由于A+
包含C
,我们已经证明A → C
属于F+
,这相当于A → C
隐含{ {1}}和AB → CD
。
现在让我们尝试第二种方式:
A → B
另一方面,你可能不想做的事情是计算1. A → B (given)
2. AB → CD (given)
3. A → AB (by 1. for enrichment, adding A both to left and right side of the dependency)
4. A → CD (by 3. and 2. for transitivity)
5. A → C (by 4. for decomposition)
的关闭,因为这将是一项冗长乏味的任务...... (这是一项指数任务!)。
答案 1 :(得分:0)
AB-> CD(给定)
因此,
AB-> C和
AB-> D
(通过分解)
A-> B(给定)
因此,A-> AB,通过增强
因此,通过传递性,A-> C&amp; A-&GT;!d