从我遇到的所有与数据库相关的参考书中,有一个通用规则是数据库表应该至少为 3NF。
据我了解,如果表满足 1NF 并且具有单列主键,则该表被认为是 2NF。如果我错了,请纠正我。
所以我不明白为什么有这么多的争论,特别是对于关联 M:N 表的实体;例如:
一个Product_Customer
表,列:
CustomerProductID
CustomerID
ProductID
有人说主键 ( CustomerProductID
) 不是必需的,应该使用复合键 ( CustomerID, ProductID
) 代替。
但这是否违反了表格的通用规则,因为使用复合键甚至不能满足 2NF 的要求,至少应该有 3NF?
如果我错了,请纠正我,尤其是我理解如果表有复合键的部分,它将不在 2NF 中。