超级密钥与主密钥

时间:2012-12-04 03:02:13

标签: database key relational-database primary-key

当关系只包含一个函数依赖关系时,我遇到了理解关系中的超级密钥的问题。

当考虑关系R(A,B,C,D,E),其中A是主键并且具有函数依赖性A-> B时,A可以被认为是关系的超级密钥,因为只有一个FD?或者是否需要扩展功能依赖性以包括关系(C,D,E)的未提及部分以便找到超级密钥?

我很困惑,因为我在网上看到的所有材料都包含多个功能依赖,所有这些都包含了关系中的所有属性,所以我不知道如何解释未使用的属性如果有人可以帮助澄清这一点,我会很感激!

3 个答案:

答案 0 :(得分:1)

如果唯一明确提到的关系模式的FD是A⟶B,则存在隐含的,平凡的FD {A,B,C,D,E}⟶{A,B,C,D,E}。鉴于A⟶B,我们可以推断出:

  • {A,C,D,E}是R。
  • 的主键
  • A⟶B存在部分密钥依赖性,因此R不在BCNF中,关系模式R应分解为两个非损失预测:
    • R1(A,B),A⟶B,因此A是主键。
    • R2(A,C,D,E)都是关键(主键是组合{A,C,D,E})。
    • 并且R1⋈R2≡R(假设⋈是连接操作)。

正如Catcall在评论中所说,提到A是R的主键。如果A是主键,那么每个单例FDA⟶B,A⟶C,A⟶D和A⟶E(或者,统称为A⟶{B,C,D,E})适用,并且不需要单独调出A⟶B.如果A是R的主键,则根本不需要分解R;这个表确实没有什么有趣的,因为它根据可用信息被归一化为5NF(假设没有未说明的非平凡FD,MVD或JD)。

如果A是主键,那么它也是超级键,但不是正确的超级键。 A和一个或多个其他属性的任何属性组合也是一个超级密钥,并且是一个合适的超级密钥。

答案 1 :(得分:1)

  

当考虑关系R(A,B,C,D,E)时,其中A是主键   并且利用函数依赖性A-> B,可以将A视为超级   因为只有一个FD,关键是关系吗?

如果给出,A是R的主键,那么根据定义,你有FD A-> BCDE。它也遵循

  • A->乙
  • A-&以及c
  • A-> d
  • A-&GT,E

如果A是R的主键,则按定义遵循A也是候选键和R的超级键。

答案 2 :(得分:1)

让我们简单一点: 以下是候选和主要

的定义

超级密钥

  

超级键代表键的超集。

     

超级密钥是一组共同采用的一个或多个属性,可以唯一地标识所有其他属性。

候选键

  

候选键是超级键,没有适当的子集是超级键。

     

换句话说,候选键是最小的超级键。

主键:

  

它是数据库设计者选择的候选键,用于标识实体集中的实体。

     

主键是最小超级键。在ER图中,主键由主键属性加下划线表示。

     

理想情况下,主键仅由单个属性组成。但是可以使用由多个属性组成的主键。