可以肯定地说,当 1NF 表没有复合候选键(主键由多于一列组成)时,该表自动处于 2NF 中吗?
当一个表的主键中只有一列时,它可以违反 2NF 吗?
可以肯定地说,当 1NF 表没有复合候选键(主键由多于一列组成)时,该表自动处于 2NF 中吗?
当一个表的主键中只有一列时,它可以违反 2NF 吗?
只要不存在非平凡的 FD,A->B,R 满足其中 B 是非素数且 A 是 R 的某个候选键的适当子集,则关系 R 就处于 2NF 中。
您首先必须考虑所有候选键。如果所有候选键恰好是单个属性键,那么这些键中唯一可能的正确子集是 {}(空集)。对空集的依赖不太可能无意中出现,因为它们通常是显而易见且不必要的。然而,即使只有一个简单的密钥,这种依赖关系也是完全可能的。
是的,当主键中只有一列时,该表可能违反 2NF。2NF 的基本思想是让表的所有字段都直接依赖/关联到主键。@AB 给出的例子解释了同样的观点。
在 2NF 中拥有单个表的关键是“删除适用于表的多行的数据子集并将它们放在单独的表中”。
如果一个表有多个重复信息的行,那么应该将该信息移动到另一个表并通过使用外键建立关系。