Je vais essayer d'être bref et d'aller à l'essentiel.
Ce avec quoi je ne suis absolument pas d'accord dans votre démarche, c'est quand vous dites qu'il faut attendre la mise en production de la base pour voir si la normalisation absolue ne pose pas de problème.
Des bases en 5NF, je n'en vois pas tous les jours. Mais heureusement, beaucoup d'entre elles donnent toute satisfaction. D'ailleurs, le jour où un théoricien va découvrir la 6NF, devra-t-on en déduire que toutes les bases existantes sont à jeter ??
Normaliser par défaut, oui, puisque la méthode est éprouvée. (Je ne préconise absolument pas une dénormalisation préventive).
Attendre la production pour vérifier que le modèle est efficace, c'est délirant.
Dans un projet digne de ce nom, on a une phase de test de charge permettant de vérifier que le traitement des gros volumes reste efficace, et que de nombreuses connexions concurrentes sont bien supportées.
Bien entendu, on n'est pas à l'abri de laisser passer un problème durant cette phase de test, mais "attendre et voir", c'est de la folie.
Comme l'a relevé un intervenant, une fois qu'un système est en production, devoir l'arrêter pour révision du modèle est une véritable catastrophe.
Vos exemples chiffrés ont le mérite de rendre les choses plus concrètes, même s'ils sont numériquement inexacts et extrapolés à mauvais escient.
* Sur l'exemple des titres de civilité, "Mlle" ne requiert que 4 caractères, et non 5. (Sur http://sqlpro.developpez.com/Normes/SQL_normes.html, j'ai souvenance d'une rubrique relative aux titres de civilité qui précise "Attention à la présence ou l'absence du point terminal de l'abréviation.")
* Les pages de SGBD ne font pas nécessairement 4 ou 8 Ko. D'ailleurs, en dernier ressort, c'est au niveau de l'OS et des disques physiques que ça se joue, avec une granularité qui peut être différente de celles des pages du SGBD du fait des caches de lecture anticipée.
* 8 pages de surcharge ( ou 24 ou 32) en cas de dénormalisation du titre. Même en admettant l'exactitude du calcul, ce point n'est pas fondamental. En effet, en transactionnel, on accède principalement aux données de manière ciblée, grâce aux index. Il est donc peu probable qu'on lise la table complète.
Par ailleurs, je l'avais dit d'emblée, puis en conclusion : la dénormalisation s'accompagne d'inconvénients. Il faut juger si les avantages qu'on obtient de la dénormalisation sont supérieurs.
Votre argument sur le manque de souplesse de la dénormalisation des titres (si subitement on veut en ajouter un) se situe à ce niveau-là : suis-je prêt à accepter cette incommodité ?
* Le critère numérique de dispersion est bien discutable.
En effet, sur une grande table de clients, on en conclurait qu'il faut créer une table des prénoms, puisqu'on n'a que quelques centaines de prénoms différents, alors qu'on a des milliers de noms de famille
Si vous avez un complément là-dessus, je suis preneur.
Partager