← Retourner à la liste des articles
Image blog
Auteur

Par Maxime Jumelle

CTO & Co-Founder

Publié le 14 nov. 2023

Catégorie Data Engineering

Normalisation de données : définitions, exemples

Pour améliorer les opérations commerciales et maintenir la compétitivité, il est essentiel de gérer efficacement les données en entreprise. Cependant, la diversité des sources de données, leur complexité croissante et la façon dont elles sont stockées peuvent rapidement devenir un problème important.

L'une des méthodes les plus efficaces pour résoudre ces problèmes est la normalisation des données. Pour garantir que les données sont organisées de manière optimale, cohérente et efficiente, elle est souvent considérée comme l'une des meilleures pratiques en matière de gestion de bases de données. Cet article explique ce que c'est, pourquoi elle est importante pour les entreprises modernes et comment elle peut être utilisée pour obtenir des avantages.

Dans cet article, nous allons définir la normalisation des données et proposer un exemple didactique pour voir concrètement comment appliquer la normalisation de données sur une table.

Qu'est-ce que la normalisation des données ?

En conception de bases de données, la normalisation des données est une méthode systématique utilisée pour réduire la redondance des données et améliorer l'intégrité des données. Il s'agit d'organiser et de structurer les données selon des règles spécifiques appelées formes normales. Ces règles aident les concepteurs de bases de données à créer des schémas qui facilitent l'accès aux données, améliorent la cohérence et limitent les erreurs d'insertion, de mise à jour et de suppression.

Imaginez une base de données comme une bibliothèque immense pour la comprendre. Si cette bibliothèque n'avait pas de système de classification, les livres seraient dispersés librement. Les utilisateurs et les bibliothécaires auraient du mal à trouver les informations requises. La normalisation est un moyen essentiel d'organiser l'information pour qu'elle soit facilement accessible et utilisable, tout comme le classement est un système de bibliothèque.

Avantages de la normalisation des données

La réduction de la taille de la base de données est l'un des principaux avantages de la normalisation des données. En supprimant les répétitions inutile, il est possible de réduire la quantité d'espace de stockage nécessaire, ce qui peut également entraîner une réduction des coûts, en particulier dans les environnements Cloud où les ressources sont souvent facturées en fonction de leur utilisation.

L'optimisation des requêtes est un autre avantage important. Les données bien normalisées sont plus prévisibles et les moteurs de base de données peuvent indexer et accéder à l'information nécessaire plus efficacement. Cela peut augmenter les performances de l'application, améliorer l'expérience utilisateur et réduire les charges sur les serveurs.

Enfin, la maintenance d'une base de données normalisée est plus simple. Les mises à jour et les extensions futures sont plus faciles car les changements sont localisés et ont moins d'impact sur les autres parties du système. La rationalisation de la structure sous-jacente d'un environnement de données normalisé rend souvent les modifications plus simples à mettre en œuvre.


À lire : découvrez notre formation Data Engineer


Comment fonctionne la normalisation des données ?

Pour bien comprendre le fonctionnement de la normalisation des données, prenons l'exemple d'une base de données contenant des informations sur des commandes de clients d'un site E-Commerce. Sans normalisation, une table pourrait contenir des entrées avec des données de clients, des produits commandés et des détails de commande, tout cela mêlé. La redondance et les anomalies sont alors inévitables : on parle alors de table dénormalisée.

Table dénormalisée

Chaque ligne de cette table fait référence à une commande d'un utilisateur. Chaque commande contient plusieurs articles, renseignés dans la colonne product_id, et d'autres informations comme la date par exemple.

Première forme normale (1NF)

La première forme normale (1NF) exige que chaque cellule de la table contienne une valeur unique et indivisible, et que les répétitions au sein d'une même table soient éliminées. Dans notre exemple, cela signifie que les produits commandés par un client seraient séparés de ses données, avec une ligne pour chaque produit commandé plutôt qu'une liste de produits dans une seule entrée.

1NF

Avec cette représentation, chaque ligne contient bien une seule information d'un produit d'une commande spécifique. La première étape de la normalisation des bases de données s'assure qu'il n'y a pas de groupes récurrents à l'intérieur des lignes et que toutes les colonnes d'une table contiennent des valeurs atomiques, c'est-à-dire des valeurs indivisibles.

Deuxième forme normale (2NF)

La deuxième forme normale (2NF) prend le relais en s'assurant que tous les attributs non clés (c'est-à-dire les informations qui ne font pas partie de la clé principale de la table) sont entièrement dépendants de la clé principale. En pratique, cela implique généralement la création de tables distinctes pour des ensembles de données liés mais non dépendants les uns des autres. En continuant avec notre exemple, nous aurions une table séparée pour les produits plutôt que d'avoir des informations sur le produit mélangées aux commandes.

2NF

Avec cette représentation, nous obtenons ainsi deux tables : une table order qui contient toutes les informations de chacune de nos commandes, et une table orders_products qui contient tous les produits de chaque commande. Nous sommes garantie de ne pas avoir de répétition, tout en n'ayant que des relations avec la clé primaire order_id.

Troisième forme normale (3NF)

La troisième forme normale (3NF) va plus loin en exigeant que les colonnes ne dépendent que de la clé primaire plutôt que les unes des autres. Par conséquent, si une commande an un attribut qui peut être déduit d'un attribut non clé, cet attribut doit être transféré dans une table différente. Si chaque produit à un fournisseur unique, il convient de déplacer ces informations dans une table distincte pour éviter la redondance des informations sur les fournisseurs pour chaque produit dans l'exemple de commande.

3NF

Dans cette troisième forme, nous avons en plus l'information du fournisseur (provider) qui vend l'article. La particularité ici, c'est que la colonne provider dépend de product_id alors qu'il ne s'agit pas de la clé primaire. Nous avons alors une dépendance transitive \(C \Rightarrow B \Rightarrow A\), ce que nous ne souhaitons pas.

Avec la 3NF, l'objectif est donc de construire une troisième table products qui va contenir les informations de chaque article, pour ensuite faire le lien si nécessaire entre orders_products et products. Le principe serait le même si, par exemple, la table orders comprenait également un champ username : une nouvelles table users serait créée avec les colonnes user_id et username.


À découvrir : notre formation Data Engineer


Des formes normales supplémentaires existent, notamment la forme normale de Boyce-Codd (BCNF), la quatrième forme normale (4NF) et la cinquième forme normale (5NF). Chacune de ces formes normales est conçue pour résoudre des cas de redondance ou de dépendances plus complexes. Cependant, la plupart des bases de données sont en pratique normalisées jusqu'à la 3NF, qui résout de nombreux problèmes courants de redondance et d'intégrité sans introduire un degré de complexité excessive dans la gestion des données.

Quand utiliser la normalisation ?

Lors de la conception initiale d'une base de données, la normalisation des données est la plus utile et nécessaire. Les cycles de refactorisation d'une base de données peuvent également inclure des processus de normalisation, bien que cela nécessite parfois une réingénierie importante et une possible interruption du service. La taille de la base de données, les types de requêtes courantes, la performance requise et les ressources de maintenance sont tous des facteurs qui déterminent la décision de normaliser et le degré de normalisation à appliquer.

Dans certains cas, il est possible d'utiliser une dénormalisation ciblée pour optimiser certaines requêtes particulières. Cependant, ces situations sont généralement rares et doivent être traitées avec soin afin d'éviter de compromettre l'intégrité globale des données.

Conclusion

La normalisation des données est un processus fondamental dans l'architecture des bases de données. Elle améliore la qualité et la cohérence des données, optimise les performances des requêtes, et facilite la maintenance des bases de données. En suivant les principes de la normalisation, vous pouvez créer des structures de données qui serviront mieux votre entreprise et vos utilisateurs, rendant vos applications plus robustes, évolutives et efficaces.

En fin de compte, bien que la normalisation puisse sembler technique et complexe à première vue, elle sert un objectif très humain : elle aide à s'assurer que l'information soit accessible et utilisable, permettant ainsi aux personnes de travailler plus efficacement et de prendre des décisions plus précises.

Articles similaires

Blog

7 févr. 2024

Data Engineering

Pendant de nombreuses années, le rôle des Data Engineers était de récupérer des données issues de différentes sources, systèmes de stockage et applications tierces et de les centraliser dans un Data Warehouse, dans le but de pouvoir obtenir une vision complète et organisée des données disponibles.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

4 déc. 2023

Data Engineering

Pour de nombreuses entreprises, la mise en place et la maintenant de pipelines de données est une étape cruciale pour avoir à disposition d'une vue d'ensemble nette de toutes les données à disposition. Un des challenges quotidien pour les Data Analysts et Data Engineers consiste à s'assurer que ces pipelines de données puissent répondre aux besoins de toutes les équipes d'une entreprise.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article

Blog

8 nov. 2023

Data Engineering

Les pipelines de données ETL et ELT sont devenus des outils cruciaux pour Data Engineers et les décideurs afin d'intégrer toutes les données dans différents systèmes. Airbyte est l'une des technologies qui a émergé dans ce domaine et qui suscite de l'intérêt à l'heure actuelle.

Maxime Jumelle

Maxime Jumelle

CTO & Co-Founder

Lire l'article