功能依赖性F = {AB-> CD,A-> B}或A-> C.

时间:2016-06-14 08:25:12

标签: database-normalization functional-dependencies

我有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但我不确定。

2 个答案:

答案 0 :(得分:1)

您可以通过两种不同的方式查看A → CAB → 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