私が遭遇したすべてのデータベース関連の参考書から、データベーステーブルは少なくとも3NFである必要があると述べる一般的なルールがあります。
私が理解していることから、テーブルが1NFを満たし、単一列の主キーを持っている場合、テーブルは2NFと見なされます。私が間違っていたら訂正してください。
そのため、特にM:Nテーブルに関連するエンティティに対して複合キーを使用することの議論が多い理由を理解できませんでした。例えば:
A Product_Customer
テーブル、列:
CustomerProductID
CustomerID
ProductID
主キー(CustomerProductID
)は必要なく、複合キー(CustomerID, ProductID
)代わりに。
しかし、複合キーを使用しても2NFを満たさないため、それはテーブルの普遍的な規則に違反していないのではないでしょうか。
私が間違っている場合は修正してください。特に、テーブルに複合キーがある場合、2NFにはならないことを理解している部分です。
2NFの定義は正しくありません。
2NFは、リレーションが1NFにあり、それが部分的な依存関係なしの場合です。つまり、マルチパートキーの一部のみに依存する述語(列)はありません。
つまり、すべての(1つ以上の)キーが単一列のキーであるテーブルは、定義上、2NFviolate2NFを実行できません。ただし、alsoが2NFに違反しない複数列(複合)キーを持つテーブルを持つこともできます。キーに含まれる列の数ではなく、候補キーのpartのみに依存する非キー列があるかどうかについてです。
テーブルが複数列のキーを持つことが2NFである可能性があるので、複数列のキーを持つテーブルが3NFである可能性もあります。推移的な依存関係もないことを確認する必要があります。