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

时间:2015-01-27 15:39:40

标签: database database-normalization functional-dependencies 3nf bcnf

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

我的理解:

候选键= 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 请指正。

2 个答案:

答案 0 :(得分:1)

  

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

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

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

答案 1 :(得分:1)

  1. 当一些FD持有时,其他人必须坚持,按照阿姆斯特朗的公理。但是你只看给出 FD。

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

  3. PK(主键)无关紧要。 PK只是你决定打电话给的一个CK" PK"。

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

  5. (见this answer。)