一位同事将新表的值勾画为:
"Foo", "some value 1"
"Foo", "some value 2"
"Foo", "some value 3"
"Bar", "some value 3"
这些是表中唯一的列。列名是 Col1、Col2。
一个人说这个表没有标准化,另一个人说它是。
它违反规范化的具体论点是,删除 Col1 "Foo" 中带有 "Foo" 的三个记录将不再存在于系统中。那个人说应该有一个包含 ID 和名称列的查找表。上表将引用该表的 Id 作为其 FK。
它没有被规范化的论点是表中没有第三列依赖于第一列(第三规范化形式)。
我认为混淆来自它是 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。它是否正确?