我正在与另一位数据库设计师就标准化进行有趣的讨论。在此示例中,我们有一个GameTitles表,每个记录必须包含游戏发布的年份。他说2NF要求必须对所有内容进行规范化,因此,为了合规,年份字段应拆分为带有自己主键的ReleaseYears表,该主键由GameTitles表引用。我说它应该保留为GameTitles表本身上的一个字段。
我对此的论点是,一年只是一个非原始的数值,从本质上说是静态的(即2011年始终为2011年)。因此,它是它自己的标识符,因为它就是它,所以不需要引用它。这还引入了额外的维护,因为您现在必须在表中添加一个新的年份以供参考。如果您在表中使用大范围的年份进行填充,那么您将拥有多余的记录,这些记录可能根本不会引用它们。这也增加了数据库的大小,因为您现在有了额外的表,记录开销以及年份本身的额外主键。如果将年份保留为GameTitles表中的字段,则可以消除所有这些额外的维护和开销。
有这个想法吗?
编辑:打算将此发布在StackOverflow上。有人可以投票删除它或举报以引起注意吗?