给定具有n个属性R(A1,A2,...,An)的关系架构R。 R可能的 super 键最大数量是多少?请说明您的答案。

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

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

至于第二个问题。我的回答是n个咒语。

你们有什么感想?

最佳答案



这不过是拿

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

或者我们可以简单地认为如下:我们将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



从上面的示例可以看出。 A,B,C,D上方是所有候选键,因此它们的超键(例如(AB)或(BCD)或(ABCD))都不是候选键。类似地,如果在任何关系中(AB)是候选 key ,那么其任何 super key (例如ABC或ABD)都不能是候选 key 。



PS:这考虑了候选键是最小超键的定义(无法从中删除任何属性,同时仍保留其唯一标识/功能上确定所有其他属性的能力)

关于database - 候选人和 super 键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36111054/

10-10 11:40