2

当关系仅包含一个功能依赖项时,我在理解关系中的超级键时遇到问题。

当考虑关系 R(A,B,C,D,E) 时,其中 A 是主键并且具有函数依赖关系 A->B,由于只有一个 FD,因此可以将 A 视为关系的超级键吗?或者是否需要扩展函数依赖以包含关系(C、D、E)中未提及的部分以找到超级键?

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

4

3 回答 3

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 是主键,那么每个单例 FD A ⟶ B、A ⟶ C、A ⟶ D 和 A ⟶ E(或者,统称为, A ⟶ {B,C,D,E}) 适用,不需要单独调用 A ⟶ B。如果A是R的主键,则完全不需要分解R;该表确实没有什么有趣的地方,因为给定可用信息(假设没有未说明的非平凡 FD、MVD 或 JD),它被标准化为 5NF。

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

于 2012-12-04T03:08:32.337 回答
1

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

如果给定A 是 R 的主键,那么根据定义你有 FD A->BCDE。这也随之而来

  • A->B
  • A->C
  • A->D
  • A->E

如果 A 是 R 的主键,那么根据定义,A 也是 R 的候选键和超键。

于 2012-12-04T03:39:37.827 回答
1

让我们简单点:这里是超级键、候选键和主键的定义

超级钥匙

超级密钥代表密钥的超集。

超级密钥是一组一个或多个属性,它们被集体采用,并且可以唯一地标识所有其他属性。

候选键

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

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

首要的关键:

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

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

理想情况下,主键仅由单个属性组成。但是可能有一个由多个属性组成的主键。

于 2015-05-10T09:01:35.127 回答