一位同事勾画出一个新表格的值为:
"Foo", "some value 1"
"Foo", "some value 2"
"Foo", "some value 3"
"Bar", "some value 3"
这些是表中仅有的列。列名为Col1、Col2。
一个人说这个表没有规范化,另一个人说是规范化的。
违反规范化的具体论点是,删除Col1 "Foo“中带有"Foo”的三个记录将不再存在于系统中。那个人说应该有一个包含ID和Name列的查找表。上表将引用该表的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。这是正确的吗?
发布于 2009-06-05 12:31:50
如果这两列真的是全部,那么我会说这个数据库表是第三范式。我的理由是:
我不知道你的工作伙伴是否真的想要进入4NF,5NF或Boyce-Codd NF -我非常怀疑......
Marc
发布于 2009-06-05 11:11:57
有不同的标准化级别。但是如果没有实际的字段名,你就不能真正知道你是否需要规范化。
发布于 2009-06-05 11:10:54
https://stackoverflow.com/questions/957564
复制