候选人和超级钥匙

时间:2016-03-20 06:58:30

标签: database rdbms candidate-key

给定具有n个属性R(A1,A2,...,An)的关系模式R. R的最大可能超级密钥数是多少?请证明你的答案。

给定具有n个属性R(A1,A2,...,An)的关系模式R. R的可能候选键的最大数量是多少?请证明你的答案。

我仍然想知道如何回答这两个问题。我认为第一个问题的答案是(2 ^ n) - 1,因为不包括空集。

至于第二个问题。我的答案是n atrributes。

你们有什么想法?

2 个答案:

答案 0 :(得分:1)

  

与n个属性相关的最大超级键数是所有可能的属性组合的数量。结果是(2 ^ n)-1。

这只是采取

来自n(nC1)的1个属性+来自n(nC2)的+ 2个属性+ ... + nCn =(2 ^ n)-1

或者我们可以简单地认为如下:我们将每个n个属性表示为一个位。当属性必须是超级键的一部分时,我们可以放1,否则为0。所以这将是(2 ^ n),因为我们对n个比特/属性中的每一个都有两个选择(1或0)。我们减去1以避免全0,即将'无属性'视为超级密钥。所以(2 ^ n)-1。

当所有属性在功能上可以确定所有其他属性时,可能会发生这种情况。当属性之间存在功能依赖性循环时会发生这种情况。例如,如果存在关系R(A,B,C,D),则FD循环将是:

A->B
B->C
C->D
D->A

超级密钥为A,B,C,D,(AB),(AC),(AD),(BC),(BD),(CD),(ABC),(ACD),(ABD),(BCD),(ABCD),总计(2 ^ 4)-1 = 15

  

对于nCr最大的size-r键,将出现最大可能的候选键数。或者换句话说,当所有size-r属性组合都是候选键时,会出现最大候选键数。

从上面的例子中可以看出这一点。以上A,B,C,D都是候选键,因此它们的超级键(例如(AB),或(BCD)或(ABCD))都不是候选键。类似地,如果在任何关系(AB)中是候选密钥,则其超密钥(例如ABC或ABD)都不能是候选密钥。

  

通常,nCfloor(n / 2)是n个属性上关系的可能候选键的最大数量。

PS:这考虑了候选键是最小超级键的定义(在没有属性可以删除的同时仍然能够唯一地识别/功能确定所有其他属性的那个)

答案 1 :(得分:1)

具有n个属性的R的最大超级键数是2 ^ n,这是R属性的幂集的大小。当您意识到∅(空集)可能是候选键并且∅是每组属性的子集时,这是显而易见的。

候选键的最大数量由nC(n / 2)(二项式系数)给出。