La normalisation dans le contexte des bases de données relationnelles (RAG, ou « Relationnelle-Algorithmique-Géométrique ») est le processus d’organisation des données dans une base de données afin de minimiser la redondance et d’optimiser l’intégrité des données. La normalisation implique de diviser une base de données en plusieurs tables plus petites et de définir des relations entre elles selon des règles spécifiques visant à garantir que les modifications des données sont logiques et consistent.
1. Première Forme Normale (1NF) :
- Définition : En 1NF, une table doit avoir des valeurs atomiques, ce qui signifie qu’elle ne doit pas contenir de groupes de colonnes répétitifs ou d’attributs multivalués.
- Exemple :
Avant normalisation :
\`\`\`plaintext
Employé (employé\_id, nom, téléphone1, téléphone2)
\`\`\`
Après normalisation :
\`\`\`plaintext
Employé (employé\_id, nom)
Téléphone (téléphone_id, employé_id, numéro)
\`\`\`
Ici, chaque numéro de téléphone est stocké dans une table séparée liée par l’employé\_id.
1. Deuxième Forme Normale (2NF) :
- Définition : Une table est en 2NF si elle est d’abord en 1NF et que tous les attributs non clés dépendent entièrement de la clé primaire.
- Exemple :
Avant normalisation :
\`\`\`plaintext
Commande (commande_id, client_id, client_nom, produit_id, produit\_nom)
\`\`\`
Après normalisation :
\`\`\`plaintext
Commande (commande_id, client_id, produit\_id)
Client (client_id, client_nom)
Produit (produit_id, produit_nom)
\`\`\`
Cela élimine la redondance des informations sur le client et le produit.
1. Troisième Forme Normale (3NF) :
- Définition : Une table est en 3NF si elle est en 2NF et que tous les attributs sont directement dépendants de la clé primaire, et non d’autres attributs non clés (c’est-à-dire qu’il ne doit pas y avoir de dépendances transitoires).
- Exemple :
Avant normalisation :
\`\`\`plaintext
Employé (employé_id, département_id, département\_nom)
\`\`\`
Après normalisation :
\`\`\`plaintext
Employé (employé_id, département_id)
Département (département_id, département_nom)
\`\`\`
Cela évite la duplication du nom de département pour chaque employé.
Ces ouvrages fournissent une base solide pour comprendre les principes et les méthodes de normalisation en bases de données.