函数依赖 F = {AB->CD , A->B} 或 A->C
Functional dependency F = {AB->CD , A->B} or A->C
我有 R(A,B,C,D) 和函数依赖 AB->CD 和 A->B 我想知道或者 A->C 是正确的吗?
我尝试通过 amstrong 公理找到 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 但我不确定。
你有两种不同的方法来查看 A → C
是否可以由 AB → CD
和 A → B
导出:要么你可以尝试计算属性 A
的闭包,使用用于计算一组属性的闭包的算法,并查看它是否包含 C
(简单方法),或者您可以通过应用阿姆斯特朗公理(更困难的方法)推导出它的证明。
让我们先用简单的方法来做:
A+ = A (starting point)
A+ = AB (by using A → B)
A+ = ABCD (by using AB → CD)
所以,由于A+
包含C
,我们证明了A → C
属于F+
,相当于说A → C
是隐含的通过 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)
另一方面,您可能不想做的事情是计算F
的闭包,因为这将是一个相当冗长且繁琐的任务...(这是一项指数级的任务!)。
AB->CD(给定)
因此,
AB->C,并且
AB->D
(通过分解)
A->B(给定)
所以,A->AB,通过扩充
因此,通过传递性,A->C & A->D!
我有 R(A,B,C,D) 和函数依赖 AB->CD 和 A->B 我想知道或者 A->C 是正确的吗?
我尝试通过 amstrong 公理找到 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 但我不确定。
你有两种不同的方法来查看 A → C
是否可以由 AB → CD
和 A → B
导出:要么你可以尝试计算属性 A
的闭包,使用用于计算一组属性的闭包的算法,并查看它是否包含 C
(简单方法),或者您可以通过应用阿姆斯特朗公理(更困难的方法)推导出它的证明。
让我们先用简单的方法来做:
A+ = A (starting point)
A+ = AB (by using A → B)
A+ = ABCD (by using AB → CD)
所以,由于A+
包含C
,我们证明了A → C
属于F+
,相当于说A → C
是隐含的通过 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)
另一方面,您可能不想做的事情是计算F
的闭包,因为这将是一个相当冗长且繁琐的任务...(这是一项指数级的任务!)。
AB->CD(给定)
因此,
AB->C,并且
AB->D
(通过分解)
A->B(给定)
所以,A->AB,通过扩充
因此,通过传递性,A->C & A->D!