Dénormalisation
Rappel :
La normalisation est le processus qui permet d'optimiser un modèle logique afin de le rendre non redondant. Ce processus conduit à la fragmentation des données dans plusieurs tables.
Définition : Dénormalisation
Processus consistant à regrouper plusieurs tables liées par des références, en une seule table, en réalisant statiquement les opérations de jointure adéquates.
L'objectif de la dénormalisation est d'améliorer les performances de la BD[1] en recherche sur les tables considérées, en implémentant les jointures plutôt qu'en les calculant.
Remarque : Dénormalisation et redondance
La dénormalisation est par définition facteur de redondance. A ce titre elle doit être utilisée à bon escient et des moyens doivent être mis en œuvre pour contrôler la redondance créée.
Méthode : Quand utiliser la dénormalisation ?
Un schéma doit être dénormalisé lorsque les performances de certaines recherches sont insuffisantes et que cette insuffisance à pour cause des jointures.
Attention : Inconvénients de la dénormalisation
La dénormalisation peut également avoir un effet néfaste sur les performances :
En mise à jour
Les données redondantes devant être dupliquées plusieurs fois.
En contrôle supplémentaire
Les moyens de contrôle ajoutés (triggers, niveaux applicatifs, etc.) peuvent être très coûteux.
En recherche ciblée
Certaines recherches portant avant normalisation sur une "petite" table et portant après sur une "grande" table peuvent être moins performantes après qu'avant.
Fondamental : Redondance et bases de données
La redondance volontaire est autorisée dans une base de données à trois conditions :
avoir une bonne raison d'introduire de la redondance (améliorer des performances dans le cas de la dénormalisation)
documenter la redondance en explicitant les DF responsables de la non 3NF
contrôler la redondance par des mécanismes logiciels (triggers par exemple)