FondamentauxFundamentals · 5 août 2026 · 9 min de lecture· August 5, 2026 · 9 min read

La normalisation des bases de données, expliquée simplement

Database Normalization, Explained Simply

La normalisation est un processus de conception qui organise les données pour éliminer la redondance et éviter les anomalies lors des mises à jour. Elle se fait par étapes appelées "formes normales".

Normalization is a design process that organizes data to eliminate redundancy and avoid anomalies during updates. It proceeds in stages called "normal forms".

Le problème que la normalisation résout

The Problem Normalization Solves

Une table mal conçue répète les mêmes informations sur plusieurs lignes, ce qui crée trois types d'anomalies : d'insertion, de mise à jour et de suppression.

A poorly designed table repeats the same information across multiple rows, which creates three types of anomalies: insertion, update, and deletion anomalies.

-- Table non normalisée : le nom du client est répété à chaque commande
commande_id | client_nom | client_courriel      | produit
1           | Marie Roy  | marie@exemple.com    | Clavier
2           | Marie Roy  | marie@exemple.com    | Souris
-- Unnormalized table: the customer name repeats on every order
order_id | customer_name | customer_email       | product
1        | Mary Ross     | mary@example.com     | Keyboard
2        | Mary Ross     | mary@example.com     | Mouse

Si le courriel de Marie change, il faut le mettre à jour sur toutes ses lignes de commande — sinon les données deviennent incohérentes.

If Mary's email changes, it has to be updated on every one of her order rows — otherwise the data becomes inconsistent.

1NF : la première forme normale

1NF: First Normal Form

Chaque colonne doit contenir une seule valeur atomique (pas de listes ni de valeurs multiples dans une même cellule), et chaque ligne doit être identifiable de façon unique.

Every column must hold a single atomic value (no lists or multiple values in one cell), and every row must be uniquely identifiable.

2NF : la deuxième forme normale

2NF: Second Normal Form

En plus de respecter la 1NF, chaque colonne non-clé doit dépendre de la totalité de la clé primaire — pertinent surtout pour les tables à clé composée.

In addition to satisfying 1NF, every non-key column must depend on the entire primary key — mainly relevant for tables with a composite key.

3NF : la troisième forme normale

3NF: Third Normal Form

En plus de la 2NF, aucune colonne non-clé ne doit dépendre d'une autre colonne non-clé (pas de dépendance transitive). C'est le niveau visé par la plupart des bases de données transactionnelles.

In addition to 2NF, no non-key column may depend on another non-key column (no transitive dependency). This is the level most transactional databases aim for.

-- Version normalisée (3NF) : deux tables séparées
CREATE TABLE clients (
  id INT PRIMARY KEY,
  nom VARCHAR(100),
  courriel VARCHAR(100)
);

CREATE TABLE commandes (
  id INT PRIMARY KEY,
  client_id INT REFERENCES clients(id),
  produit VARCHAR(100)
);
-- Normalized version (3NF): two separate tables
CREATE TABLE customers (
  id INT PRIMARY KEY,
  name VARCHAR(100),
  email VARCHAR(100)
);

CREATE TABLE orders (
  id INT PRIMARY KEY,
  customer_id INT REFERENCES customers(id),
  product VARCHAR(100)
);
FormeExigence principale
1NFValeurs atomiques, pas de colonnes répétées
2NFDépendance envers la clé primaire complète
3NFAucune dépendance transitive entre colonnes non-clés
FormMain Requirement
1NFAtomic values, no repeating columns
2NFDependency on the full primary key
3NFNo transitive dependency between non-key columns
Astuce : normaliser réduit la redondance, mais augmente le nombre de jointures nécessaires. Pour la lecture intensive (rapports, tableaux de bord), une dénormalisation ciblée est parfois un compromis raisonnable. Tip: normalizing reduces redundancy but increases the number of joins needed. For read-heavy workloads (reports, dashboards), targeted denormalization is sometimes a reasonable trade-off.

Points clés à retenir

Key Takeaways

  • La normalisation vise avant tout à éliminer la redondance et les anomalies de mise à jour
  • La 3NF est un bon objectif par défaut pour la plupart des systèmes transactionnels
  • Dénormaliser volontairement peut être justifié pour la performance, mais doit rester un choix conscient, pas un oubli de conception
  • Normalization's main goal is eliminating redundancy and update anomalies
  • 3NF is a good default target for most transactional systems
  • Deliberately denormalizing can be justified for performance, but should be a conscious choice, not a design oversight
← Article précédent : Fonctions de fenêtrage ← Previous article: Window Functions Article suivant : Vues et procédures stockées → Next article: Views and Stored Procedures →
Publicité Advertisement