还有另一个候选键吗?如果是这样,它是什么?

Is there another candidate key? If so, what is it?

问。已知对于 R(A,B,C,D,E):

  1. R 恰好有 5 个超级键。
  2. ABC 是候选键。
  3. D 是非素数属性。
  4. ABE 和 ACE 不是超级密钥。

还有其他候选键吗?如果有,那是什么?

编辑: 该题的题目是判断R(A,B,C,D,E)中除了ABC之外是否还有另外一个候选key,考虑1,2,3,4条件成立。

我的做法是,根据第二个条件ABC是一个候选key那么super keys是:ABC,ABCD,ABCE,ABCDE。

但是第一个条件说正好有 5 个超级键,这意味着第 5 个超级键可能是另一个候选键。根据第 3 和第 4 个条件,唯一的其他 SK/CK 可能是 BCE,因为 ACE 和 ABE 不能是 SK 的。

但是如果BCE是一个候选键,BCDE应该是一个超级键,这使得总共有6个超级键并且违反了第一个条件。

我不太确定我哪里出错了。 请帮我分析一下吧。

让我们尝试详细说明解决问题的步骤。

有 25 (= 32) 个可能的属性子集:

{{}, A, B, C, D, E, AB, AC, AD, AE, BC, BD, BE, CD, CE, DE, ABC, ABD, ABE,
 ACD, ACE, ADE, BCD, BCE, BDE, CDE, ABCD, ABCE, ABDE, ACDE, BCDE, ABCDE}

我们正在寻找与 ABC 不同的候选键,了解您提到的事实。

  1. ABC is a candidate key.

如果 ABC 是候选键,则它的任何子集都不能是候选键。这排除了将 {}、A、B、C、AB、AC、BC 作为候选键的可能性。类似地,它的每个超集都不能成为候选键。这不包括 ABCD、ABCE、ABCDE。

所以我们现在有以下可能的候选键:

{D, E, AD, AE, BD, BE, CD, CE, DE, ABC, ABD, ABE,
 ACD, ACE, ADE, BCD, BCE, BDE, CDE, ABDE, ACDE, BCDE}
  1. D is a non-prime attribute.

D 不是主要属性,因此它可以包含在超级键中,但不能包含在候选键或其中的一部分中。这意味着如果 D 存在于一组属性中,则该集合不能成为候选键。因此,这将 D、AD、BD、CD、DE、ABD、ACD、ADE、BCD、BDE、CDE、ABCD、ABDE、ACDE、BCDE 排除在候选键之外。

我们现在有以下可能的候选键:

{E, AE, BE, CE, ABC, ABE, ACE, BCE}
  1. ABE and ACE are not superkeys.

由于ABE和ACE不是超级键,所以它们也不是候选键,当然它们的none个子集是候选键。因此,这也排除了 E、AE、BE、CE、ABE、ACE。

所以我们现在有以下可能的候选键:

{ABC, BCE}

我们已经知道ABC是候选键,所以剩下的唯一可能就是BCE是候选键。

但我们知道:

  1. R has exactly 5 superkeys. 2. ABC is a candidate key.

从这两个事实可以看出,ABC、ABCE、ABCD、ABCDE 是四个超级键。只缺一个。

因此,如果 BCE 是候选密钥,正如您已经指出的那样,这意味着 BCE 和 BCDE 也是超级密钥。我们有六个不同的超级密钥,这与假设相矛盾。

另一方面,如果BCE不是候选键,那么我们只有四个超级键,这也与假设矛盾。

因此,我们可以说无法回答这个问题。最后请注意,如果我们假设“superkey”有一个非常规的含义,我们也无法解决它,因为它有时会被使用:也就是说,一个严格的 superkey,一组严格包含一个键的属性。在这种情况下,如果 BCE 是候选键,我们又有四个超级键:ABCE、ABCD、ABCDE 和 BCDE。另一方面,如果 BCE 不是候选键,我们只有三个超级键:ABCE、ABCD 和 ABCDE。