Plusieurs réponses à une question de schéma de base de données ont suggéré une table supplémentaire pour normaliser une base de données pour une fonctionnalité qui ne fait pas partie des exigences actuelles (une table UserDepartment pour permettre une relation plusieurs-à-plusieurs entre les employés / utilisateurs et les différents services qu'ils peuvent utiliser appartenir à.).
Pas contre la normalisation. On dirait qu'en matière de conception de base de données, il y a une forte pression pour inclure des fonctionnalités dont ils sont «sûrs» que quelqu'un voudra à l'avenir. Est-il si difficile d'ajouter des tables / champs à la base de données pour tenir compte des fonctionnalités qu'il y a une tendance à sur-concevoir? Ne seraient-ils pas refactorisés ou mis à niveau comme le reste de l'application si nécessaire? Refaire des choses n'est jamais amusant, mais déplacer des données d'une table vers une nouvelle peut être fait. Je ne sais pas où cette ligne de pensée se terminera.
Edit: Il y a tellement d'aversion à cela, je me demande combien de projets finissent par ne pas ajouter une fonctionnalité qui nécessite un changement radical de la base de données ou des approches non normalisées sont prises comme l'ajout d'un champ DepartmentID2 au lieu d'une nouvelle table. La nécessité de plusieurs départements pour un employé est un problème de domaine commun. Je n'ai tout simplement pas remarqué de nombreux schémas de base de données jonchés de relations plusieurs-à-plusieurs.