Normalisation (1NF, 2NF, 3NF)

La normalisation est un processus essentiel dans la conception des bases de données relationnelles. Son objectif principal est de structurer les données de manière à éviter la redondance et à minimiser les anomalies lors des opérations d'ajout, de mise à jour ou de suppression. Une base de données bien normalisée garantit une intégrité des données, une meilleure performance et une maintenance plus facile à long terme.

Pourquoi normaliser ?

  • Éviter les redondances : Une donnée ne doit être stockée qu'une seule fois dans une base de données. La duplication des données peut entraîner des incohérences, notamment si les informations sont modifiées dans un endroit et pas dans un autre.

  • Prévenir les anomalies : Les anomalies surviennent lorsqu'une base de données est mal structurée. Elles peuvent se manifester sous plusieurs formes, notamment des anomalies d'insertion, des anomalies de mise à jour et des anomalies de suppression.

Les formes normales

La normalisation est divisée en plusieurs étapes appelées formes normales (NF). Chaque forme normale représente un niveau de structuration des données.

  1. Première forme normale (1NF) :

    • Une table est en 1NF si :

      • Toutes les colonnes ne contiennent que des valeurs atomiques (c'est-à-dire non divisibles).

      • Chaque entrée dans une colonne doit avoir une seule valeur (pas de listes ou d'ensembles de valeurs dans une cellule).

    • Exemple : Une table commandes contenant plusieurs produits dans une même colonne n'est pas en 1NF. Pour passer en 1NF, il faut que chaque ligne contienne une seule valeur pour chaque colonne.

      • Non 1NF :

        id_commandeproduits

        1

        "Produit A, Produit B"

      • En 1NF :

        id_commandeproduit

        1

        Produit A

        1

        Produit B

  2. Deuxième forme normale (2NF) :

    • Une table est en 2NF si :

      • Elle est déjà en 1NF.

      • Toutes les colonnes non clés dépendent entièrement de la clé primaire. Cela signifie qu'il ne doit pas y avoir de dépendance partielle. Une colonne ne doit pas dépendre seulement d'une partie de la clé primaire dans une table à clé composite.

    • Exemple : Si nous avons une table commandes qui stocke des informations sur les clients et les produits, certaines colonnes peuvent dépendre uniquement du client, et d'autres uniquement de la commande. Cela crée des dépendances partielles. Pour corriger cela, il faut diviser la table.

      • Non 2NF :

        id_commandeid_clientnom_clientproduit

        1

        101

        Alice

        Produit A

      • En 2NF :

        • Table clients :

          id_clientnom_client

          101

          Alice

        • Table commandes :

          id_commandeid_clientproduit

          1

          101

          Produit A

  3. Troisième forme normale (3NF) :

    • Une table est en 3NF si :

      • Elle est en 2NF.

      • Toutes les colonnes non clés dépendent directement de la clé primaire et non d'une autre colonne non clé (pas de dépendance transitive).

    • Exemple : Si une table employes contient la colonne ville et que la colonne code_postal dépend de la ville, il y a une dépendance transitive. Pour normaliser en 3NF, il faut retirer cette dépendance en créant une nouvelle table pour les informations sur les villes.

      • Non 3NF :

        id_employenomvillecode_postal

        1

        Jean

        Paris

        75000

      • En 3NF :

        • Table employes :

          id_employenomid_ville

          1

          Jean

          1

        • Table villes :

          id_villevillecode_postal

          1

          Paris

          75000

Les avantages de la normalisation :

  1. Réduction des redondances : La normalisation élimine les duplications inutiles de données, ce qui permet de réduire la taille de la base de données et de faciliter sa gestion.

  2. Intégrité des données : En structurant les données selon les règles de normalisation, vous évitez les incohérences et assurez que chaque information est maintenue à jour.

  3. Amélioration des performances : Une base de données bien normalisée permet des requêtes plus rapides et des temps de traitement plus courts, car les données sont organisées de manière optimale.

Limites de la normalisation :

Il existe des situations où la normalisation peut poser des problèmes, notamment :

  • Performances des jointures : Dans certaines applications à fort volume de données, l'utilisation de plusieurs tables nécessitant des jointures complexes peut ralentir les performances.

  • Désormalisation nécessaire : Dans certains cas, la dénormalisation (ou réduction du niveau de normalisation) peut être nécessaire pour optimiser des requêtes complexes. La désormalisation consiste à réintroduire certaines redondances pour améliorer la vitesse d'exécution des requêtes, en particulier dans les systèmes à haute performance.

Exercices

Last updated