候选人和超级钥匙

cho*_*man 5 database rdbms candidate-key

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

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

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

至于第二个问题.我的回答是n ariributes.

你们有什么感想?

Mah*_*aha 4

与 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

PS:这考虑了候选键是最小超级键的定义(其中不能删除任何属性,同时仍然能够唯一地识别/在功能上确定所有其他属性)