首页 > 解决方案 > 是否存在只有一个属性的关系是非素数的,并且关系在 2NF 而不是在 3NF?

问题描述

是否只有一个属性的关系是非素数(所有其他属性都是素数),并且关系在2NF 但不是在 3NF

标签: database-normalization3nf

解决方案


如果我解释这个权利,你问这个:

“假设有一个只有一个非关键属性/列的关系/数据库表。该表是否有可能是第二个 NF/范式,但不是第三个?”

答案是否定的。具有一个非关键属性的关系也总是在第三个 NF 中。

你可以这样想条件1-3:

  1. 要在第一个 NF 中,表的属性值不能包含枚举,并且每个表行都必须是唯一的。
  2. [只有当表有复合键时,它才可能不在第二个 NF 中。]要在第二个 NF 中,不能有任何仅依赖于部分键的非键属性。不依赖于 FULL 键的每个非键属性必须与它们所依赖的键部分一起隔离到它们自己的关系中。(当然,原表中的key是没有变化的)
  3. [只有至少有两个非关键属性的表才可能不在第三个 NF 中。]要在第三个 NF 中,不能有任何仅依赖于其他非关键属性的非关键属性关键属性。同样,它们需要被隔离到它们自己的关系中,您通常需要为此创建一个密钥。在原始表中,您将留下一个外键。

如您所见,要使第三个 NF 失败,您至少需要两个非关键属性,因为一个需要依赖于另一个。如果非关键属性少于两个并且表已经在第二个 NF 中,那么它也将在第三个 NF 中。


推荐阅读