T'as déjà vu une table de base de données qui ressemble à un vrai bazar ? Dans une cellule, t'as une liste de numéros de téléphone, dans une autre — des adresses écrites en une seule longue phrase, dans la troisième — plusieurs dates séparées par des virgules. Ce genre de "bordel" rend la recherche, la mise à jour et la gestion des données super galère. Mais il existe un moyen de mettre de l'ordre là-dedans. Ce moyen, c'est la normalisation des données.
En gros, la normalisation des données, c'est le processus qui consiste à organiser les données dans les tables de façon à minimiser la redondance et à éliminer les soucis liés à la mise à jour, la suppression et l'insertion.
Voilà les problèmes que la normalisation des données permet de résoudre :
- Élimination de la duplication des données. Pourquoi stocker la même info deux fois ? Ou trois fois ? Ça fait grossir la base et ça fout le bazar dans la cohérence des données.
- Minimisation des anomalies. Tu sais, comme dans la vraie vie, il y a des anomalies ? Genre t'as oublié de supprimer un ancien collègue de ta liste de contacts. Dans les bases de données, ça arrive aussi. La normalisation aide à éviter ces moments gênants.
- Simplification de la structure des données. Plus la structure est simple, plus c'est facile à gérer.
- Accélération des performances de la base de données. Moins de données — des requêtes plus rapides.
Et si on ne normalise pas ?
Sans normalisation, les données dans la base deviennent "collantes" — elles traînent toujours des bouts d'infos inutiles avec elles.
Imagine une table Étudiants :
| ID Étudiant | Nom | Cours |
|---|---|---|
| 1 | Otto Lin | Mathématiques, Physique |
| 2 | Anna Song | Chimie |
| 3 | Otto Lin | Biologie, Chimie |
Ce qui peut mal tourner :
- Duplication des données :
Otto Linapparaît plusieurs fois. Pourquoi ? Parce qu'il suit plusieurs cours. - Difficile de mettre à jour l'info : si le numéro de téléphone de l'étudiant Otto Lin change, il faudra chercher toutes les lignes où il apparaît pour mettre à jour le numéro.
- La suppression des données peut casser l'intégrité : imagine qu'Otto décide de quitter les cours. Si on supprime toutes ses lignes, on perd toute l'info sur lui, y compris son nom.
Quand la normalisation peut être trop poussée ?
Franchement, la normalisation, c'est comme un emploi du temps ultra strict : c'est cool, mais parfois t'as envie d'un peu de spontanéité. En vrai, il y a des cas où la dénormalisation est préférable :
- Dans les bases de données analytiques, où la vitesse des requêtes est plus importante que la minimisation du volume de données.
- Quand la structure devient trop complexe : si pour respecter les formes normales tu dois gérer des dizaines de tables, les requêtes deviennent vite lourdes.
- Pour les agrégats utilisés tout le temps : si tu calcules tout le temps la même somme, autant la stocker directement.
Par exemple, on a un site e-commerce. Si les utilisateurs cherchent souvent le total des commandes, tu peux stocker ce total direct dans la table Commandes au lieu de le recalculer à chaque fois.
Mais faut pas oublier que la dénormalisation, c'est un compromis. Ça augmente le risque d'erreurs lors des mises à jour des données.
Exemples de structure problématique et sa normalisation
Regardons un exemple de table avant normalisation :
| ID Commande | Client | Produits | Total commande |
|---|---|---|---|
| 1 | Otto Lin | Téléphone, Écouteurs | 20000 |
| 2 | Anna Song | Réfrigérateur | 30000 |
| 3 | Otto Lin | Téléviseur | 40000 |
Ici, on voit clairement le souci :
- Les infos sur les clients se répètent.
- Les produits sont stockés sous forme de liste — ça viole le principe d'atomicité des données.
Après normalisation
On va découper cette table en trois : Table Clients
| ID Client | Nom |
|---|---|
| 1 | Otto Lin |
| 2 | Anna Song |
Table Produits
| ID Produit | Nom | Prix |
|---|---|---|
| 1 | Téléphone | 10000 |
| 2 | Écouteurs | 10000 |
| 3 | Réfrigérateur | 30000 |
| 4 | Téléviseur | 40000 |
Table Commandes
| ID Commande | ID Client | ID Produit |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 1 | 2 |
| 2 | 2 | 3 |
| 3 | 1 | 4 |
Maintenant, on a :
- Plus de duplication des données.
- Chaque produit est dans une ligne séparée.
- On peut facilement ajouter de nouveaux produits et commandes.
La normalisation, c'est l'art de mettre de l'ordre dans le chaos. Ouais, parfois ça peut sembler un peu strict et exigeant, mais le but final en vaut la peine. Dans les prochaines leçons, on va étudier les formes normales dans l'ordre : d'abord 1NF, puis 2NF, et enfin 3NF. Allez, cap sur le monde des données bien rangées !
GO TO FULL VERSION