Estoy teniendo una discusión interesante con otro diseñador de bases de datos sobre la normalización. En este ejemplo, tenemos una tabla de GameTitles y cada registro debe contener el año en que se lanzó el juego. Él dice que 2NF exige que todo debe normalizarse, por lo tanto, para cumplir, el campo del año debe dividirse en una tabla ReleaseYears con su propia clave principal a la que hace referencia la tabla GameTitles. Digo que debería permanecer como un campo en la tabla GameTitles.
Mi argumento para esto es que un año es solo un valor numérico no primitivo que es estático por su propia naturaleza (es decir, 2011 siempre será 2011). Debido a esto, sirve como su propio identificador y no necesita nada para referenciarlo, ya que es lo que es. Esto también introduce mantenimiento adicional, ya que ahora debe agregar un nuevo año a la tabla solo para referenciarlo. Si rellena previamente la tabla con una amplia gama de años, entonces tiene registros adicionales que potencialmente no tendrán referencias a ellos en absoluto. Esto también aumenta el tamaño de la base de datos, ya que ahora tiene una tabla adicional, gastos generales de registro y la clave primaria adicional para el año en sí. Si mantiene el año como un campo en la tabla GameTitles, eliminará todo este mantenimiento adicional y gastos generales.
¿Pensamientos sobre esto?
editar: destinado a publicar esto en StackOverflow. ¿Alguien puede votar para eliminar esto o marcarlo para llamar la atención?