给定具有n个属性R(A1,A2,...,An)的关系模式R. R的最大可能超级密钥数是多少?请证明你的答案。
给定具有n个属性R(A1,A2,...,An)的关系模式R. R的可能候选键的最大数量是多少?请证明你的答案。
我仍然想知道如何回答这两个问题。我认为第一个问题的答案是(2 ^ n) - 1,因为不包括空集。
至于第二个问题。我的答案是n atrributes。
你们有什么想法?
答案 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)(二项式系数)给出。