Accéder au contenu principal

Qu'est-ce que la deuxième forme normale (2NF) ?

Découvrez comment la deuxième forme normale (2NF) peut améliorer la conception de votre base de données en éliminant les dépendances partielles.
Actualisé 6 janv. 2025  · 9 min de lecture

Lorsque vous travaillez avec des bases de données, il est fréquent de rencontrer des problèmes tels que des données redondantes et des mises à jour incohérentes. La deuxième forme normale est une étape de normalisation des bases de données qui s'appuie sur la première forme normale (1NF) pour créer des tableaux plus propres et plus efficaces. 

La compréhension de la 2NF est essentielle pour toute personne travaillant dans la conception de bases de données ou la gestion de données, et elle jette les bases de formes de normalisation supérieures telles que la troisième forme normale (3NF). Dans cet article, nous allons explorer le fonctionnement de la 2NF et la manière de transformer les tableaux pour répondre aux exigences de la 2NF, à l'aide d'exemples pratiques. Nous aborderons également les avantages et les inconvénients de la 2NF, ainsi que les cas d'utilisation qui lui conviennent le mieux.

Comprendre la deuxième forme normale

La deuxième forme normale est une étape de normalisation de la base de données axée sur l'élimination des dépendances partielles. Elle a été introduite par Edgar F. Codd, le pionnier des bases de données relationnelles, dans le cadre de ses travaux sur la normalisation.  

Pour qu'un tableau puisse être en 2NF, il doit satisfaire aux règles de la première forme normale :

  • Atomicité : Chaque cellule doit contenir une seule valeur (pas de groupes ou de tableaux répétitifs).
  • Rangs uniques : Le tableau doit avoir une clé primaire claire.

La 2NF va encore plus loin avec une règle supplémentaire : éliminer les dépendances partielles.

Une dépendance partielle se produit lorsqu'un attribut non premier (colonne qui ne fait partie d'aucune clé candidate) ne dépend que d'une partie d'une clé composite au lieu de la clé entière. La règle de la 2NF garantit que tous les attributs non primitifs dépendent de l'ensemble de la clé primaire, et pas seulement d'une partie de celle-ci. Le fait de laisser des dépendances partielles dans un tableau signifie que des données redondantes peuvent se glisser dans la base de données, ce qui entraîne un manque d'efficacité et des incohérences potentielles lors des mises à jour ou des suppressions.

La théorie seule peut être un peu aride, alors prenons un exemple pratique.

Vous trouverez ci-dessous un Inscription aux cours tableau des étudiants de DataCamp.

Identifiant de l'étudiant ID du cours Nom du cours Nom de l'instructeur
1001 201 Principes fondamentaux de SQL Ken Smith
1002 202 Introduction à Python Merlin O’Donnell
1001 202 Introduction à Python Merlin O’Donnell

Ici, la clé primaire est la combinaison de l'identifiant de l'étudiant et de l'identifiant du cours. Toutefois, les attributs non primordiaux Course Name et Course Fee dépendent uniquement de l'identifiant du cours, et non de l'ensemble de la clé. Ceci est une violation de la 2NF.

Étapes de décomposition des tableaux pour obtenir la fonction 2NF

Pour vous assurer qu'un tableau respecte les règles de la 2NF, vous devez :

  1. Identifiez toutes les clés candidates : Déterminez les ensembles minimaux d'attributs qui identifient de manière unique les tableaux. Ce sont vos clés de candidat.
  2. Déterminer les dépendances fonctionnelles : Identifiez toutes les dépendances fonctionnelles dans le tableau. Plus précisément, recherchez les dépendances dans lesquelles les attributs non premiers (ceux qui ne font partie d'aucune clé candidate) dépendent uniquement d'une partie d'une clé composite.
  3. Éliminez les dépendances partielles : Pour chaque dépendance partielle :
    • Déplacez les attributs dépendants dans un nouveau tableau avec la partie de la clé dont ils dépendent.
    • Assurez-vous que le nouveau tableau possède une clé primaire unique.
  4. Répétez l'opération jusqu'à ce qu'il ne reste plus de dépendances partielles : Confirmez que chaque attribut non primaire de tous les tableaux dépend entièrement de sa clé primaire respective.

Exemples pratiques de la deuxième forme normale

Voyons maintenant deux exemples.

Exemple 1 : Tableau des inscriptions aux cours

Précédemment, nous avons vu le tableau d'inscription aux cours suivant :

Identifiant de l'étudiant ID du cours Nom du cours Nom de l'instructeur
1001 201 Principes fondamentaux de SQL Ken Smith
1002 202 Introduction à Python Merlin O’Donnell
1001 202 Introduction à Python Merlin O’Donnell

Suivons les étapes décrites dans la section précédente.

1. Identifiez la clé de notre candidat.

Dans ce cas, la clé candidate est une clé composite composée de l'identifiant de l'étudiant et de l'identifiant du cours. Cette combinaison unique identifie chaque ligne du tableau.

2. Déterminer nos dépendances fonctionnelles

Le nom du cours et le nom de l'instructeur dépendent de l'ID du cours, et non de la clé composite complète (ID de l'étudiant, ID du cours). Il s'agit d'une dépendance partielle car ces attributs ne dépendent que d'une partie de la clé composite.

3. Éliminer les dépendances partielles

Nous devons déplacer les attributs qui ne dépendent que d'une partie de la clé (Nom du cours et nom de l'instructeur) vers un nouveau tableau basé uniquement sur l'attribut l'identifiant du cours.

Après décomposition, nos nouveaux tableaux se présentent comme suit :

Tableau des inscriptions aux cours

Identifiant de l'étudiant ID du cours
1001 201
1002 202
1001 202

Tableau des détails du cours

ID du cours Nom du cours Nom de l'instructeur
201 Principes fondamentaux de SQL Ken Smith
202 Introduction à Python Merlin O’Donnell

Si vous souhaitez mettre la main à la pâte et créer vos propres bases de données, jetez un coup d'œil à notre cours PostgresQL. Si vous êtes un peu plus avancé, vous pouvez essayer cette Introduction à la modélisation des données dans Snowflake, qui couvre des idées telles que la modélisation entité-relation et la modélisation dimensionnelle.

Exemple 2 : Tableau des commandes

Nous commencerons par ce tableau des ordres. Essayez de suivre les étapes que nous avons décrites ci-dessus et décomposez ce tableau vous-même ! 

Numéro d'ordre ID du produit Date de la commande Nom du produit Nom du fournisseur
1 201 2024-11-01 Ordinateur portable TechSupply
1 202 2024-11-01 Souris TechSupply
2 201 2024-11-02 Ordinateur portable TechSupply
3 203 2024-11-03 Clavier KeyMasters

1. Identifier notre candidat clé

La combinaison de l'ID de la commande et de l'ID du produit identifie chaque ligne de manière unique, ce qui fait de (ID de la commande, ID du produit) une clé composite candidate. Aucune colonne ne peut identifier les lignes de manière unique, pour les raisons suivantes :

  • L'identifiant de la commande n'est pas unique, car plusieurs produits peuvent faire partie de la même commande.
  • L'identifiant du produit n'est pas unique, car le même produit peut apparaître dans différentes commandes.

Cela signifie que (ID de commande, ID du produit) est également notre clé primaire.

2. Déterminer nos dépendances fonctionnelles

La date de la commande dépend de l'ID de la commande (et non de la clé composite complète). Il s'agit d'une dépendance partielle.

Le nom du produit et le nom du fournisseur dépendent de l'ID du produit (et non de la clé composite complète). Il s'agit également de dépendances partielles.

3. Éliminer les dépendances partielles

Nous devons diviser le tableau en tableaux plus petits, chacun portant sur une dépendance logique. 

Tout d'abord, nous allons créer un tableau pour les informations relatives aux commandes, qui contient des informations spécifiques aux éléments suivants ID de la commande.

Tableau des commandes

Numéro d'ordre Date de la commande
1 2024-11-01
2 2024-11-02
3 2024-11-03

Ensuite, nous créons un tableau qui contient des informations spécifiques à ID du produit.

Tableau des commandes

ID du produit Nom du produit Nom du fournisseur
201 Ordinateur portable TechSupply
202 Souris TechSupply
203 Clavier KeyMasters

Le tableau d'origine ne comporte plus que la clé composite et les relations entre les commandes et les produits.

Numéro d'ordre ID du produit
1 201
1 202
2 201
3 203

Maintenant, notre base de données est en 2NF parce que 1) toutes les dépendances partielles ont été éliminées, et 2) nattributs de première importance dépendent entièrement de leurs clés primaires respectives.

Quand mettre en œuvre la deuxième forme normale ?

Alors, pourquoi devriez-vous refondre votre base de données en 2NF ? Est-ce suffisant en soi ou devriez-vous faire un pas de plus et viser la 3NF ? 

Avantages et limites de la deuxième forme normale

La deuxième forme normale offre plusieurs avantages, ce qui en fait une étape utile dans le processus de normalisation des bases de données :

  • Amélioration de l'intégrité des données : En éliminant les dépendances partielles, la 2NF minimise les anomalies d'insertion, de mise à jour et de suppression, ce qui permet d'obtenir une base de données plus fiable.
  • Réduction de la redondance : 2NF réduit la répétition des données, optimise l'utilisation du stockage et simplifie la maintenance des données.
  • Structure de données améliorée : Elle jette les bases d'une normalisation plus poussée, comme la progression vers la troisième forme normale, en créant une conception de base de données plus propre et plus efficace.

Mais elle présente certaines limites :

  • Complexité accrue : La décomposition des tableaux pour répondre à la norme 2NF peut rendre le processus de conception plus complexe, en particulier lorsqu'il s'agit de clés composites et de dépendances.
  • Joints supplémentaires : La division des tableaux peut nécessiter davantage de jointures dans les requêtes, ce qui peut avoir un impact sur les performances des systèmes contenant de grands ensembles de données ou des requêtes complexes - nous y reviendrons plus loin.
  • Redondance résiduelle : Si la 2NF réduit les dépendances partielles, elle ne traite pas les dépendances transitives, ce qui laisse une certaine redondance jusqu'à ce qu'elle soit traitée par la 3NF.

Considérations sur les performances de la deuxième forme normale

La décomposition des tableaux pour éliminer les dépendances partielles peut avoir un impact direct sur les performances de la base de données. D'une part, la réalisation de la 2NF réduit la redondance des données et améliore la cohérence, ce qui réduit les anomalies lors des opérations d'insertion, de mise à jour ou de suppression. D'autre part, la normalisation peut augmenter le nombre de tableaux, ce qui signifie que des jointures supplémentaires sont nécessaires pour récupérer des données connexes. Cela pourrait avoir un impact sur les performances des requêtes dans les grands ensembles de données.

Pour vous assurer que votre base de données normalisée reste performante, veillez à suivre les meilleures pratiques suivantes :

  • Indexation : Utilisez des index pour accélérer les jointures entre tableaux décomposés.
  • Optimisation des requêtes : Optimisez les requêtes pour minimiser le coût des jointures supplémentaires.
  • Approche hybride : Combinez la normalisation avec la dénormalisation dans les domaines où la performance est importante, tels que les tableaux de reporting.
  • Suivi régulier : Évaluez en permanence les performances de votre base de données à l'aide d'outils de profilage afin de détecter tout problème potentiel.

La 2NF n'est-elle qu'une étape transitoire pour atteindre la troisième forme normale ?

Dans la plupart des cas, les concepteurs de bases de données s'efforcent d'atteindre la troisième forme normale en raison de sa capacité à réduire davantage la redondance et à améliorer l'intégrité globale des données. Cependant, l'obtention de la fonction 3NF implique souvent un travail supplémentaire, tel que la création de tableaux et de relations supplémentaires, ce qui peut introduire de la complexité et des compromis en termes de performances lors de l'exécution des requêtes.

Dans certains cas, l'utilisation de la deuxième forme normale peut être suffisante. Si la simplicité et la rapidité de mise en œuvre sont des priorités, comme dans les projets à petite échelle, le prototypage ou les situations où la redondance des données est minimale, la 2NF peut suffire. Par exemple, dans les systèmes où tous les attributs dépendent déjà entièrement d'une clé primaire simple, l'obtention de la fonction 2NF peut remplir l'objectif principal de réduction de la dépendance partielle, sans qu'il soit nécessaire de procéder à une normalisation plus poussée.

Dépasser la deuxième forme normale : vers la troisième forme normale

Si vous souhaitez normaliser davantage votre base de données, vous pouvez continuer à remanier vos tableaux pour atteindre la troisième forme normale.

La 3NF s'appuie sur la 2NF en traitant les dépendances transitives, c'est-à-dire les situations dans lesquelles des attributs non clés dépendent d'autres attributs non clés plutôt que de la clé primaire. Cette progression garantit que chaque attribut dépend directement de la clé primaire et de rien d'autre.

Par exemple, dans un tableau de suivi des inscriptions aux cours :

  • 2NF: garantit que les attributs tels que le nom du cours et le nom de l'étudiant dépendent entièrement de leurs clés primaires respectives (par exemple, ID de l'étudiant et ID du cours). Cela permet d'éliminer les dépendances partielles, c'est-à-dire les attributs autres que la clé qui ne dépendent que d'une partie de la clé composite.
  • 3NF: Veille à ce que les attributs tels que les détails de l'instructeur ou les informations sur le département soient stockés dans des tableaux distincts, éliminant ainsi les dépendances transitives.

La 3NF est idéale pour les systèmes plus complexes où l'intégrité et l'efficacité des données sont primordiales, en particulier lorsque le volume de données augmente. Consultez notre article Qu'est-ce que la troisième forme normale ? si vous souhaitez en savoir plus sur la 3NF et sa forme plus restrictive, la BCNF.

Conclusion

La deuxième forme normale est une étape essentielle de la normalisation des bases de données, qui comble le fossé entre la 1NF et les formes supérieures telles que la 3NF. En supprimant les dépendances partielles, la 2NF réduit la redondance et améliore la fiabilité de vos données. Bien qu'il puisse ajouter une certaine complexité, les avantages d'une meilleure intégrité des données et d'une maintenance simplifiée en font un élément essentiel d'une conception efficace de la base de données.

Si vous êtes prêt à aller plus loin, découvrez notre cours sur la conception des bases de données pour approfondir votre compréhension des techniques de normalisation et de leurs applications pratiques. Vous pouvez également valider vos compétences en SQL et en gestion de bases de données et démontrer votre expertise à des employeurs potentiels grâce à notre certification SQL Associate!

Enfin, si vous êtes un décideur dans une entreprise et que vous savez que vous avez du travail à faire pour créer des bases de données plus propres et plus efficaces, envisagez d'organiser un DataCamp pour les entreprises demande de démonstration. Nous pouvons vous aider à transformer les capacités de votre équipe afin que vous puissiez créer des systèmes de base de données évolutifs qui stimulent l'efficacité et l'innovation de l'entreprise. Nous pouvons même créer des parcours d'apprentissage sur mesure et des cursus personnalisés. 

Formation de 2 personnes ou plus ? Découvrez nos solutions pour les entreprises

Permettez à votre équipe d'accéder à l'ensemble de la bibliothèque DataCamp, avec des rapports centralisés, des missions, des projets et bien d'autres choses encore.

Essayez DataCamp for Business
business-homepage-hero.png

Photo of Marie Fayard
Author
Marie Fayard

Ingénieur logiciel senior, rédacteur technique et conseiller avec une formation en physique. Nous nous engageons à aider les jeunes entreprises à atteindre leur potentiel et à rendre des concepts complexes accessibles à tous.

FAQ 2NF

La deuxième forme normale (2NF) peut-elle s'appliquer aux bases de données sans clés composites ?

Oui ! Bien que la fonction 2NF implique souvent des clés composées, les tableaux à clé unique peuvent également suivre les principes de la fonction 2NF si tous les attributs non primaires dépendent entièrement de la clé primaire.

L'obtention de la fonction 2NF garantit-elle l'élimination de toute redondance dans une base de données ?

Non. Si la 2NF élimine les dépendances partielles, elle n'aborde pas les dépendances transitives. Pour cela, vous devez passer à la troisième forme normale (3NF).

Existe-t-il des situations où une base de données en 1NF est suffisante sans passer à la 2NF ?

Oui. Dans les systèmes très simples avec une redondance minimale des données ou dans les prototypes, 1NF peut suffire. En règle générale, je ne recommanderais pas de s'arrêter à 1NF, à moins que vous n'ayez une raison très spécifique et justifiable.

Quelle est la différence entre la 2NF et la troisième forme normale (3NF) ?

La 2NF supprime les dépendances partielles et garantit que les attributs dépendent de l'ensemble de la clé. La 3NF va plus loin en supprimant les dépendances transitives, en garantissant que les attributs dépendent directement de la clé primaire et non d'autres attributs non clés.

Comment vérifier si ma base de données existante est déjà en 2NF ?

Vous pouvez le vérifier en passant en revue tous les tableaux comportant des clés composites et en vérifiant que tous les attributs non primitifs dépendent de l'ensemble de la clé composite, et pas seulement d'une partie de celle-ci.

Sujets

Apprenez avec DataCamp

Certification disponible

cours

Conception de la base de données

4 hr
82.2K
Apprenez à concevoir des bases de données en SQL pour traiter, stocker et organiser les données de manière plus efficace.
Afficher les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow