同僚が新しいテーブルの値を次のようにスケッチしました。
"Foo", "some value 1"
"Foo", "some value 2"
"Foo", "some value 3"
"Bar", "some value 3"
これらは、テーブル内の唯一の列です。列名は Col1、Col2 です。
ある人は、この表は正規化されていないと言い、別の人は正規化されていると言いました。
正規化に違反したという具体的な議論は、Col1 の「Foo」で「Foo」を含む 3 つのレコードを削除すると、システムに存在しなくなるというものです。その人は、ID と Name 列を含むルックアップ テーブルが必要だと言いました。上記のテーブルは、そのテーブルの Id をその FK として参照します。
正規化されていないという議論は、最初の列 (3 番目の正規化された形式) に依存するテーブルに 3 番目の列がなかったことです。
私が思う混乱は、この例を満たすという点で 1NF であることから来ています。
Customer Tr. ID Date Amount
Jones 12890 14-Oct-2003 -87
Jones 12904 15-Oct-2003 -50
Wilkins 12898 14-Oct-2003 -21
Stevens 12907 15-Oct-2003 -18
Stevens 14920 20-Nov-2003 -70
Stevens 15003 27-Nov-2003 -60
http://en.wikipedia.org/wiki/Database_normalizationから。
しかし、「同じ情報を複数の行で表現できるため、テーブルを更新すると論理的な矛盾が生じる可能性がある」というルールに違反しているように聞こえます。これは、1NF を超える正規化に適用されます。
したがって、元のテーブルは 2NF に違反し、それによって 3NF に違反するように見えますが、1NF は満たします。これは正しいです?