0

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

我的理解 :

候选键 = ABBC

创建表时 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。
请纠正我。

4

2 回答 2

1

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

不可以。你可以一个一个地拿它们,但你必须考虑每个候选键。关系模型没有为标记一个候选键“主要”提供理论基础。在 SQL 数据库中可能有很好的实际原因,但仅在关系模型中没有理论上的理由。

“部分功能依赖”的概念适用于非主属性。唯一的非主要属性是 D。这里没有部分依赖。

于 2015-01-30T15:50:10.653 回答
1
  1. 根据 Armstrong 的公理,当一些 FD 成立时,其他 FD 必须成立。但是您只查看给定的FD。

  2. “部分FD”不是根据CK(候选密钥)定义的。2NF 是根据部分 FD 和 CK 定义的。当任何 CK 上都没有非主属性的部分 FD 时,2NF 成立。没有部分 FD 时不会。

  3. PK(主键)无关紧要。PK 只是您决定称之为“PK”的一些 CK。

  4. 当 Y 在功能上依赖于 X 的较小/适当的子集 S 时,Y 在功能上部分依赖于 X。但是如此确定的部分依赖是 X -> Y,而不是 S -> Y。

(见这个答案。)

于 2017-05-25T02:15:28.700 回答