部分功能依赖,仍然在3NF?

问题描述 投票:0回答:2

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

我的理解 :

候选键= AB和BC

在创建表时,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。 请指正。

database database-normalization functional-dependencies 3nf bcnf
2个回答
1
投票

在创建表时,AB和BC都不能将其视为主键。所以让我们一个接一个。

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

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


1
投票
  1. 根据阿姆斯特朗的公理,当一些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.

(见this answer。)

© www.soinside.com 2019 - 2024. All rights reserved.