【问题标题】:Can an attribute that only appears on the RHS of a Functional Dependency be a prime attribute?仅出现在功能依赖关系的 RHS 上的属性可以是主要属性吗?
【发布时间】:2018-11-25 04:14:58
【问题描述】:

我正在研究一个规范化问题,并且对给定关系是否为 2NF 形式感到困惑。关系为 R(A,B,C,D,E,F,G),FD 的集合为:

{ A->B, B->AC, F->ACDE, ADE->FG }.

我找到的候选键是 {F, ADE, BDE, ACDE}。但是,如果允许 ACDE 成为候选键,我有点困惑,因为据我了解,为了使属性出现在键中,它必须出现在 LHS 上或同时出现在功能依赖的 LHS 和 RHS 上。如果 ACDE 是合法键,那么它是否违反 2NF,因为 ADE 是 ACDE 的一个子集,并且仍然可以生成非主属性 G?

【问题讨论】:

  • 那么CK的定义是什么呢?是满足还是不满足?谈论 CK 违反 NF 是没有意义的。根据某些特定定义,某些 FDs 违反了 NF。 CK“生成”属性是什么意思?您没有正确使用术语。请使用足够的单词和句子以及对部分示例的引用来清楚地表达您的意思。 PS 请参阅我对另一个最近的问题的评论,即“FD 的集合”不清楚。 PS为什么要持有这种“理解”? PS“出现在 FD 的 LHS 或 LHS 和 RHS 上”与“出现在 FD 的 LHS 上”的含义相同。

标签: database relational-database database-normalization functional-dependencies


【解决方案1】:

ACDE 不是候选键,它只是一个超级键。如果您认为 ACDE 包含 ADE,这一点很容易看出,它 一个候选键。

事实上,C 不能是一个主属性,因为任何只出现在函数依赖的 RHS 中的属性都不能是任何键的一部分。

所以在这种情况下,只有三个候选键:ADE、BDE 和 F,并且关系不在 2NF 中,因为 C 是非素数属性,它是从候选键的适当子集确定的。例如,它是由 B 确定的。

【讨论】:

  • 啊,有道理。但这会在 2NF 中吗?我认为不是因为 B -> AC 所以 BDE 和 ADE 违反了 2NF。我说的对吗?
  • @WRK,你是对的,关系不是 2NF。我已经更新了答案。
  • @WRK & Renzo 重新评论这违反了 2NF:参见部分 FD 和 2NF 的定义。 FDs 违反,尽管违反的 FD 给出了相关的 CK & 属性。违反部分 FD 是以 CK 作为行列式的,而不是必须以 CK 的适当子集作为行列式的 FD。当 B -> AC 与这 3 个 CK 保持一致时,BDE -> C 是 CK 上非主属性的违规部分 FD。另外:必须检查具有每个非主要属性的所有 CK 的 all 真子集以找到所有违规者,您不能只看封面中的某些 FD。所以 WRK 不是“正确的”。
  • @philipxy 所以正确的答案是说A,B正在破坏CK上非主要属性的部分FD。我检查了 G 并且他们都持有。那么两个有问题的 CK 是 C 的 ADE 和 BDE?
  • @WRK 再次:FD,不是属性,是部分的或不是的。违反的是 FD,而不是 CK 或属性。看看你使用的定义——类似于,2NF 是当没有 FD 时......所以我们说那些 FD“违反”了 2NF(根据该定义)。 (这并不是说属性或 CK 违反了 FD。) PS 也许定义说“...... & RHS 是非主要属性”。也许“... & RHS 包含非主要属性”。这些描述了相同的条件,但对违反 FD 有不同的概念。某个共同的定义却有不同的概念。
猜你喜欢
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 2015-07-08
  • 2012-08-06
  • 2013-08-04
相关资源
最近更新 更多