Genie logiciel igl234
Thème :
Junior
1 vues ·11/19 leçons

I. Algorithmes de Normalisation (Processus)

La normalisation s’effectue généralement par une série de tests (formes normales). Si une table ne satisfait pas à une forme normale, on applique un algorithme de décomposition.

Étape 1 : Identification des Dépendances Fonctionnelles

Avant de normaliser, il faut lister toutes les règles métiers.

  • Exemple : Num_Employé → Nom_Employé (Un numéro d’employé unique détermine son nom).

Étape 2 : Décomposition sans perte d’information

Pour passer d’une forme normale à une supérieure, on “casse” la table en plusieurs tables plus petites.

  • Règle d’or : La décomposition doit être sans perte (on doit pouvoir reconstruire la table originale par jointure) et préserver les dépendances fonctionnelles.

Étape 3 : Vérification progressive

On applique les règles séquentiellement : 1NF → 2NF → 3NF.


II. Les Formes Normales Fondamentales

A. La Première Forme Normale (1NF)

Définition : Une relation est en 1NF si et seulement si :

  1. Tous les attributs sont atomiques (indivisibles).
  2. Il n’existe pas de groupes de répétition (listes, tableaux imbriqués).
  3. La table possède une clé primaire.

Explication : Une case ne doit contenir qu’une seule valeur. On ne doit pas avoir de colonnes “Enfant1, Enfant2, Enfant3…” ni de liste “Enfants : Jean, Paul”.

Exemple de violation et correction :

  • Table brute (Pas 1NF) :

    ID_Etudiant Nom Cours
    1 Owen Maths, Physique
    2 Sohan Informatique
  • Correction (Passage en 1NF) : On éclate les listes en plusieurs lignes.

    ID_Etudiant Nom Cours
    1 Owen Maths
    1 Owen Physique
    2 Martin Informatique

B. La Deuxième Forme Normale (2NF)

Définition : Une relation est en 2NF si :

  1. Elle est en 1NF.
  2. Tous les attributs non-clés dépendent de la totalité de la clé primaire (pas seulement d’une partie de celle-ci).

Contexte : Cette règle s’applique principalement aux tables ayant une clé primaire composée (plusieurs colonnes).

Explication : Si la clé est (A, B) et qu’un attribut C dépend uniquement de A, alors la table n’est pas en 2NF (dépendance partielle). On doit sortir C dans une autre table.

Exemple : Soit la table suivante avec une clé composée (ID_Commande, ID_Produit) :

ID_Commande ID_Produit Quantité Nom_Produit
101 P1 2 Stylo
101 P2 1 Gomme
  • Quantité dépend de (ID_Commande, ID_Produit) → OK.
  • Nom_Produit dépend uniquement de ID_Produit → Dépendance Partielle.

Correction (Passage en 2NF) : On sépare les infos produit.

  • Table Ligne_Commande (ID_Commande, ID_Produit, Quantité)
  • Table Produit (ID_Produit, Nom_Produit)

C. La Troisième Forme Normale (3NF)

Définition : Une relation est en 3NF si :

  1. Elle est en 2NF.
  2. Aucun attribut non-clé ne dépend d’un autre attribut non-clé.

Explication : On élimine les dépendances transitives. Schéma : Clé → A → B. Ici, B ne dépend pas directement de la clé, mais transitivement via A. B doit être déplacé.

Exemple : Table Employé (Clé : ID_Employé) :

ID_Employé Nom Service Localisation_Service
1 Diane Comptabilité Baf
2 Rostand Ventes Bafou
  • Localisation_Service dépend de Service.
  • Service dépend de ID_Employé.
  • Donc Localisation_Service dépend transitivement de ID_Employé.
  • Problème : Si on supprime l’employé Rostand, on perd l’info que le service Ventes est à Bafou.

Correction (Passage en 3NF) :

  • Table Employé (ID_Employé, Nom, #Service)
  • Table Service (Service, Localisation_Service)

III. Exemple Complet de Normalisation (Mise à jour et Corrigé)

Prenons une table brute issue d’un fichier Excel mal structuré. La clé supposée est composée de (CommandeID, ProduitID) car une commande contient plusieurs produits.

Table Initiale (Non Normalisée) :

CommandeID Date ClientID ClientNom ClientVille ProduitID NomProduit PrixUnitaire Quantité
101 01/01 C1 Diane Baf P1 Stylo 1.50 10
101 01/01 C1 Diane Baf P2 Gomme 0.80 5
102 02/01 C2 Rostand Bafou P1 Stylo 1.50 2

Étape 1 : Passage à la 1NF

Analyse : La table est déjà en 1NF car chaque cellule est atomique. Il n’y a pas de listes dans une seule cellule.

Étape 2 : Passage à la 2NF

Analyse : La clé est (CommandeID, ProduitID). Les dépendances partielles (qui ne dépendent que d’une partie de la clé) sont :

  • ClientNom, ClientVille, Date ne dépendent que de CommandeID.
  • NomProduit, PrixUnitaire ne dépendent que de ProduitID.
  • Seule Quantité dépend de la clé complète (CommandeID, ProduitID).

Action : On décompose en 3 tables.

Table A (Détails Commande) :

CommandeID ProduitID Quantité
101 P1 10
101 P2 5
102 P1 2

Table B (Commande - Infos générales) :

CommandeID Date ClientID ClientNom ClientVille
101 01/01 C1 Diane Baf
102 02/01 C2 Rostand Bafou

Table C (Produits) :

ProduitID NomProduit PrixUnitaire
P1 Stylo 1.50
P2 Gomme 0.80

Étape 3 : Passage à la 3NF

Analyse : Regardons la Table B. Les attributs non-clés sont : Date, ClientID, ClientNom, ClientVille.

  • Il y a une dépendance transitive : CommandeID → ClientID → ClientNom, ClientVille.
  • Les informations sur le client sont redondantes dans la table des commandes et dépendent de ClientID, pas directement de CommandeID.

Action : On extrait les informations clients dans une table séparée.

Résultat Final (Modèle en 3NF) :

  1. Table Clients :

    • Clé primaire : ClientID
      ClientID ClientNom ClientVille
      C1 Diane Baf
      C2 Rostand Bafou
  2. Table Commandes :

    • Clé primaire : CommandeID
    • Clé étrangère : ClientID
      CommandeID Date ClientID
      101 01/01 C1
      102 02/01 C2
  3. Table Produits :

    • Clé primaire : ProduitID
      ProduitID NomProduit PrixUnitaire
      P1 Stylo 1.50
      P2 Gomme 0.80
  4. Table Ligne_Commande (Détails) :

    • Clé primaire composée : (CommandeID, ProduitID)
      CommandeID ProduitID Quantité
      101 P1 10
      101 P2 5
      102 P1 2

Conclusion : Le modèle est maintenant optimal. Les données clients et produits ne sont plus redondantes, et une modification d’adresse client se fait en un seul endroit.

Prêt à passer à la suite ?

Vous avez terminé cette leçon sur Cours Détaillé : Algorithmes de Normalisation et Formes Normales. Continuez votre apprentissage avec la prochaine leçon ou explorez d'autres formations.