功能依赖的数量

时间:2013-10-02 13:11:50

标签: database functional-dependencies

查找具有n个属性的关系中的函数依赖项数量?

首先想到的是,我发现左手边可以有N + 1种可能性(null也可以在那里。)和右手边有类似的N + 1可能性。
因此FD的总数不应该是 (n + 1)*(n + 1) - 1

但是给出的是2 ^(n + 1)

在分析答案时,我们可以看到他们不包括像ABC这样的重要人物 - >等等。

那么什么应该是正确的ans ???

2 个答案:

答案 0 :(得分:3)

在LHS上有2 ^ n个可能的属性集,在RHS上再次有2 ^ n个可能的属性集。两个计数都包括空集。

它们之间可能存在的明显对数是2 ^ n * 2 ^ n。

虽然技术上正确,但这个答案也暗示了诸如{AB} - >之类的FD。 {}也被认为。那里有多少人?对于LHS的每个基数l,有2 ^ l个可能的子集,如果它出现在RHS上,每个子集给出一个简单的FD。因此,平凡FD的数量是2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^ n = 2 ^(n + 1) - 1.总共留下2 ^(2 * n)+ 1 - 2 ^(N + 1)。

但现在我们只排除了{AB} - > {A}之类,而不是{AB} - > {}交流。如果我们希望RHS提及LHS上未提及的属性,那么对于LHS的每个基数l,RHS上有2 ^(nl)-1个可能的子集(额外的需要减一,因为必须排除空集。总计为2 ^ 0 - 1 + 2 ^ 1 - 1 + 2 ^ 2 - 1 + ... + 2 ^ n - 1 = 2 ^(n + 1) - 1 - (n + 1)。

仍然与给出的答案不同。无论如何,这个问题的制定毫无可救药。这个问题并没有说明要将琐碎的FD排除在外。这个问题没有说明要排除“部分琐碎”的FD。

BTW让我们来看看测试的答案。选择1,{A}的关系。有四种可能的FD:

{} - > {}琐碎,LHS的RHS子集 {} - > {A}
{A} - > {}琐碎,LHS的RHS子集 {A} - > {A} LHS的RHS子集。

如果要排除琐碎的FD,正确答案是“一”。你的教科书说它是“四个”。

答案 1 :(得分:1)

我认为 2 ^ n * 2 是答案,因为它包括所有基本的最小FD,其余的可以从公理得出或是微不足道的。 A -> BCA -> BA -> C等等ABC -> A等等。

虽然不清楚是否包括所有琐碎的案件。在这种情况下,答案将是 2 ^ n * 2 ^ n 。因为我们可以为LHS和RHS选择2 ^ n个。