J'ai une discussion intéressante avec un autre concepteur de base de données sur la normalisation. Dans cet exemple, nous avons une table GameTitles et chaque enregistrement doit contenir l'année de sortie du jeu. Il dit que 2NF exige que tout soit normalisé, donc, pour être conforme, le champ année doit être divisé en une table ReleaseYears avec sa propre clé primaire référencée par la table GameTitles. Je dis que cela devrait rester comme un champ sur la table GameTitles elle-même.
Mon argument pour cela est qu'une année n'est qu'une valeur numérique non primitive qui est statique par sa nature même (c'est-à-dire que 2011 sera toujours 2011). De ce fait, il sert de son propre identifiant et n'a besoin de rien pour le référencer puisqu'il est ce qu'il est. Cela introduit également une maintenance supplémentaire puisque vous devez maintenant ajouter une nouvelle année au tableau juste pour la référencer. Si vous préremplissez le tableau avec un large éventail d'années, vous disposez alors d'enregistrements supplémentaires qui n'auront potentiellement aucune référence à eux. Cela augmente également la taille de la base de données, car vous disposez désormais d'une table supplémentaire, d'un surcoût d'enregistrement et de la clé primaire supplémentaire pour l'année elle-même. Si vous conservez l'année comme champ sur la table GameTitles, vous éliminez tous ces frais de maintenance et frais généraux supplémentaires.
Réflexions là-dessus?
edit: destiné à publier ceci sur StackOverflow. Quelqu'un peut-il voter pour le supprimer ou le signaler à l'attention?