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éfinitionDé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.

RemarqueDé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éthodeQuand 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.

AttentionInconvé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.

FondamentalRedondance et bases de données

La redondance volontaire est autorisée dans une base de données à trois conditions :

  1. avoir une bonne raison d'introduire de la redondance (améliorer des performances dans le cas de la dénormalisation)

  2. documenter la redondance en explicitant les DF responsables de la non 3NF

  3. contrôler la redondance par des mécanismes logiciels (triggers par exemple)