部分函数依赖,还在 3NF 中?

Partial Functional Dependency , still in 3NF?

关系模式 R (ABCD)
功能依赖是:
AB -> D
CB -> D
A-> C
C -> A
最高范式???

我的理解:

候选键=ABBC

创建时table AB 和BC 都不能作为主键。那么让我们一一来吧。

对于 AB 键:
AB -> D ( Fully Functional Dependency , so no problem )
CB -> D ( ??? )
A -> C (partial Functional Dependency , as left side contains only part of key)
C -> A ( Functional Dependency , So no problem )

对于密钥 BC

AB -> D ( ???? )  
CB -> D ( Fully Functional Dependency , so no problem )  
A  -> C  (Functional Dependency )  
C  -> A  ( Partial Functional Dependency , as it's LHS is part of Key )   

现在通过两个键,关系包含部分功能依赖。
那么它不应该在2NF中。
但答案是 3NF。
请纠正我。

While creating table both AB and BC can not consider as Primary key. So let's take one by one.

没有。您可以一个一个地使用它们,但是您必须考虑 每个 个候选密钥。关系模型没有为标记一个候选键 "primary" 提供理论基础。在 SQL 数据库中可能有很好的实际原因,但仅在关系模型中没有理论上的理由。

"partial functional dependency" 的概念适用于非素数属性。唯一的非主要属性是 D。这里没有部分依赖。

  1. 根据阿姆斯特朗公理,当某些 FD 成立时,其他 FD 也必须成立。但是你只看 given FDs.

  2. "Partial FD" 未根据 CK(候选键)定义。 2NF 是根据部分 FD 和 CK 定义的。当任何 CK 上都没有非素数属性的部分 FD 时,2NF 成立。当没有部分 FD 时不会。

  3. PK(主键)无关紧要。 PK 只是您决定调用 "the PK".

  4. 的一些 CK 当 Y 在功能上依赖于 X 的 smaller/proper 子集 S 时,
  5. Y 在功能上部分依赖于 X。但是如此确定的部分依赖是 X -> Y,而不是 S -> Y.

(参见 this answer。)