sto*_*fin 3 database-normalization
我正与另一位数据库设计师就规范化问题进行有趣的讨论.在这个例子中,我们有一个GameTitles表,每个记录必须包含游戏发布的年份.他说2NF强制要求所有内容都必须标准化,因此,为了符合要求,应将year字段拆分为具有自己的主键的ReleaseYears表,该主键由GameTitles表引用.我说它应该保留为GameTitles表本身的一个字段.
我的论点是,一年只是一个非原始的数值,就其本质而言是静态的(即,2011年将永远是2011年).因此,它作为自己的标识符,不需要任何引用它,因为它就是它.这还引入了额外的维护,因为您现在必须在表中添加新年才引用它.如果您在很长一段时间内预填充表格,那么您将拥有可能根本不会引用它们的额外记录.这也增加了数据库大小,因为您现在有一个额外的表,记录开销以及年份本身的额外主键.如果您将年份保留为GameTitles表中的字段,则可以消除所有这些额外的维护和开销.
对此的想法?
小智 5
人们可以很容易地查找2NF的定义 - 并且"一切正常化"不是它.如果用一个新表(id,c)的构造替换单个列c(此处为年份),其中id是唯一的并且在前一个表中用c替换c(代理键任何人?),则无法满足更多任何方式的规范化规则的逻辑约束(证据留给读者 - 来自c的所有函数依赖关系与具有替换列id的那些关系是1:1).如果有人提出这样的话,他就不理解正常化了.