Aller au contenu
Normalisation

Dénormalisation maîtrisée

Dénormaliser, c'est réintroduire une redondance contrôlée pour accélérer des lectures fréquentes. On le fait après avoir normalisé et mesuré, avec un mécanisme qui garde la copie juste.

  • dénormalisation
  • performance
  • agrégat
  • entrepôt
  • étoile

Syntaxe

Modèle
Modèle normalisé (3FN) → mesure d'une requête trop lente→ copie ou agrégat ciblé+ mécanisme qui la tient à jour (déclencheur, traitement planifié, vue matérialisée)

Exemple

Exemple concret
Problème : le tableau de bord recalcule le chiffre d'affairesde chaque client à partir de millions de lignes de commande.Ajout : client(num_client PK, nom, ca_cumule)  ca_cumule = somme de quantite × prix_vente de ses commandes,  mis à jour par un déclencheur à chaque nouvelle ligne,  ou recalculé chaque nuit.Entrepôt de données, schéma en étoile :  fait_vente(id_date, id_produit, id_magasin, quantite, montant)  dim_produit(id_produit PK, libelle, categorie, rayon)  ← dénormalisée

À retenir

  1. Gardez la source de vérité normalisée : la colonne dénormalisée est une copie que l'on peut toujours recalculer.
  2. Essayez d'abord un index, une vue ou une vue matérialisée (PostgreSQL) : elles accélèrent les lectures sans dupliquer la donnée dans le modèle métier.
  3. Les entrepôts de données dénormalisent volontairement leurs dimensions : on y lit beaucoup et l'on y écrit par lots, ce qui limite le risque d'incohérence.
  4. Piège : dénormaliser « au cas où », sans mesure. Chaque copie ajoute un risque d'incohérence et du code de synchronisation à maintenir.

Voir aussi