繁体   English   中英

找到关系中最多的候选键?

[英]finding largest number of candidate keys that a relation has?

我正在尝试解决这个与关系中的候选键有关的问题。 这是问题:

    Consider table R with attributes A, B, C, D, and E. What is the largest number of
candidate keys that R could simultaneously have?

答案是10但我不知道它是如何完成的,也不知道单词在计算答案时如何同时生效。

不是其他集合的子集的集合。
例如,{AB}和{A,B,C}不能同时作为候选键,因为{A,B}是{A,B,C}的子集。
2个属性或3个属性的组合生成同时候选键的最大数量。
看看3个属性集实际上是2个属性集的补充,例如{C,D,E}是{A,B}的补充。

         2               3    
     attributes      attributes
       sets            sets

   1.  {A,B}    -     {C,D,E}
   2.  {A,C}    -     {B,D,E}
   3.  {A,D}    -     {B,C,E}
   4.  {A,E}    -     {B,C,D}
                -     
   5.  {B,C}    -     {A,D,E}
   6.  {B,D}    -     {A,C,E}
   7.  {B,E}    -     {A,C,D}
                -     
   8.  {C,D}    -     {A,B,E}
   9.  {C,E}    -     {A,B,D}
                -     
   10. {D,E}    -     {A,B,C}

如果我将单个属性设置为集合,则只有4个选项

{A},{B},{C},{D}

任何包含1个以上元素的集合将包含上述元素之一,因此将不合格。

如果我要设置4个属性的集合,那么我将只有4个选项

{A,B,C,D},{A,B,C,E},{A,B,D,E},{B,C,D,E}

任何包含4个以上元素的集合都将包含上述之一,因此将不合格。 少于4个元素的任何集合将包含在上述元素之一中,因此将不合格。

等等

对于5个键,最好是用蛮力进行。 理解这些概念比计算更重要(DuDu / David给出了10个候选密钥的一个很好的示例,显示了10个密钥的集合是可能的,因此最大值至少要这么大)。

有什么想法? 候选键是唯一属性的组合。 因此,如果A是唯一的,则A和其他任何列也都是唯一的。 一组候选键很简单:

  • 一种
  • C
  • d
  • Ë

如果它们中的每一个都是唯一的,则任何键组合都将包含这些属性中的至少一个,并且组合也将是唯一的。 因此,这五个的唯一性将暗示任何其他组合的唯一性。

5不是具有此属性的最大候选键数。

它变得更加复杂。 如果{A,B,C,D,E}是唯一的(并且没有子集是候选关键字),则恰好有1个候选关键字。 重新排列列不会更改集合(集合是无序的)。

我们可能假设的一件事是,最大的候选键集具有相同长度的键。 这是事实。 为什么? 好吧,如果我们有一组长度不同的键,则可以通过添加任意属性来加长较短的键,而仍然有一个最大的键集。

因此,您只需要精确地考虑1、2、3、4和5个键的子集。 进行计算时,您会发现最大数量为:

5 10 10 5 1

您可以在开头添加“ 1”,并且可以识别该模式。 这是Pascal的Triangle中的一行。 实际上,这种观察(以及相关证明)使确定给定n的最大值变得容易。

顺便说一下,长度为3的集合为:

A B C
A B D
A B E
A C D
A C E
A D E
B C D
B C E
B D E
C D E

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM