其他函数依赖隐含的函数依赖

Functional dependencies implied by other functional dependencies

考虑以下属性和函数依赖性

属性:A、B、C、D、E、F、H

函数依赖:

A→D

AE → H

DF → B, C

E→C

H → E

上述依赖关系隐含了以下哪些依赖关系?

A) A → DH

B) AED →C

C) DH → C

D) ADF → E

这个问题的答案是 B。任何人都可以帮我解释一下它是如何得到 B 的,我已经查看了传递依赖性,但不会暗示

回答此类问题的一种方法是针对每个函数依赖计算行列式相对于给定函数依赖的闭包,并查看行列式是否属于此类闭包。

例如,我们可以计算 A,A+ 的闭包,看看是否隐含了 A → DH:

A+ = A
A+ = AD (because of A → D)
stop, no other attribute can be added to the closure.

因此,由于A+中不包含DH,我们可以得出结论,A → DH不是隐含的。

让我们对 AED 使用相同的方法 → C:

AED+ = AED
AED+ = AEDH (for AE → H)
AED+ = ACDEH (for A → C)

不能使用其他依赖,所以最后的闭包是:ACDEH,其中包含C,所以隐含AED → C。

如果你应用这个方法,你会发现给定的函数依赖也隐含了 DH → C。