Accéder au contenu principal

Qu'est-ce que la troisième forme normale (3NF) ?

Découvrez comment la troisième forme normale (3NF) peut vous aider à organiser vos bases de données plus efficacement en supprimant la redondance et en minimisant les problèmes de dépendance. Découvrez comment la décomposition des tableaux peut simplifier la gestion des données.
Actualisé 14 févr. 2025  · 9 min de lecture

Imaginez que vous travaillez avec une base de données massive et non structurée, remplie d'informations répétées et redondantes. Chaque mise à jour ou suppression devient un désastre potentiel, avec des risques d'erreurs et d'incohérences. La troisième forme normale (3NF) est une méthode éprouvée de normalisation des bases de données qui permet d'éviter ce chaos. La mise en œuvre de la 3NF nettoie votre structure de données, en veillant à ce qu'elle soit efficace, organisée et exempte de redondances inutiles.

Dans cet article, nous verrons comment fonctionne la 3NF, pourquoi elle est utile et comment vous pouvez la mettre en pratique. Nous comparerons également la 3NF à d'autres formes et apprendrons quand utiliser chacune d'entre elles. Tout le monde peut tirer profit d'une meilleure connaissance de ces structures, mais cette connaissance est particulièrement précieuse si vous êtes un concepteur de base de données ou un scientifique des données, car elle peut considérablement simplifier votre travail et assurer la fiabilité de vos bases de données. Si vous êtes intéressé par la conception de bases de données dans son ensemble, jetez un coup d'œil à notre cours complet sur la conception de bases de données.

Définition de la troisième forme normale (3NF)

La troisième forme normale est un concept clé de la normalisation des bases de données qui supprime les dépendances indésirables. La 3NF s'appuie sur la première forme normale (1NF) et la deuxième forme normale (2NF), c'est-à-dire qu'elle hérite de leurs règles : La 1NF exige des valeurs atomiques (indivisibles) dans chaque cellule, et la 2NF supprime les dépendances partielles sur une clé primaire composite. La 3NF va plus loin en supprimant les dépendances transitives, une situation dans laquelle les attributs non clés dépendent indirectement de la clé primaire.

En se concentrant sur ce point, la 3NF garantit que chaque colonne non clé d'un tableau est directement liée à la clé primaire et à rien d'autre. Plus concrètement, la 3NF permet de minimiser la redondance et d'éviter les anomalies lors de l'insertion, de la mise à jour ou de la suppression de données.

Dans les années 1970, Edgar F. Codd a introduit la 3NF pour formaliser les conditions permettant d'obtenir une structure de base de données entièrement normalisée. Quelques années plus tard, une reformulation de Carlo Zaniolo a permis d'expliquer plus clairement la différence entre la 3NF "classique" et la forme normale de Boyce-Codd (BCNF), plus restrictive. Ne vous préoccupez pas trop du BCNF pour l'instant, nous y reviendrons plus loin.

Comprendre les conditions de la troisième forme normale

Alors, que faut-il faire exactement pour atteindre le niveau 3NF ? Pour qu'un tableau soit éligible, il doit remplir quelques conditions :

  • Être dans 2NF: Cela signifie qu'il est déjà atomique, sans groupes répétitifs et sans dépendances partielles sur des clés composites.

Exigences 1NF, 2NF et 3NF

La 3NF comprend la 2NF et la 1NF. Image par l'auteur

  • Aucune dépendance transitive: Cette règle est essentielle. Dans un tableau 3NF, toute colonne sans clé primaire doit dépendre uniquement de la clé primaire, et non indirectement par l'intermédiaire d'une autre colonne sans clé.

Voyons ce que cela signifie concrètement.

Décomposition des tableaux pour obtenir la fonction 3NF

Passons en revue le processus de décomposition des tableaux pour atteindre la 3NF. Nous utiliserons quelques exemples de données issues des cours de DataCamp pour illustrer chaque étape.

Étape 1 : Identifier les dépendances transitives

Pour commencer, nous allons rechercher tous les attributs d'un tableau qui dépendent indirectement de la clé primaire. En règle générale, si un attribut dépend d'un élément autre que la clé primaire, cela indique unedépendance transitive . C'est le signe qu'il est peut-être temps de séparer votre tableau.

Consultez les trois tableaux ci-dessous. Lequel a une dépendance transitive ?

Tableau 1 : Cours

ID du cours Nom du cours Difficulté
201 Principes fondamentaux de SQL Débutant
202 Introduction à Python Débutant
203 Comprendre la science des données Intermédiaire

Tableau 2 : Instructeur

ID de l'instructeur Nom de l'instructeur Expertise
1 Sarah Johnson Science des données
2 Tom Williams Apprentissage automatique
3 Emily Brown Python

Tableau 3 : Inscriptions

ID d'inscription Nom de l'élève ID du cours Nom du cours
1001 Alice Smith 201 Principes fondamentaux de SQL
1002 Bob Green 202 Introduction à Python
1003 Charlie Blue 201 Principes fondamentaux de SQL

La réponse est... Tableau 3!

Dans ce tableau, le nom du cours dépend de l'ID du cours, mais pas directement de l'ID de l'inscription (la clé primaire). Cette dépendance indirecte fait de Course Name une dépendance transitive.

Étape 2 : Séparer les données dans de nouveaux tableaux

Pour traiter la dépendance transitive, nous allons diviser le tableau 1 en deux tableaux. Chaque tableau se concentrera sur les données directement dépendantes.

Tableau des inscriptions révisé

ID d'inscription Nom de l'élève ID du cours
1001 Alice Smith 201
1002 Bob Green 202
1003 Charlie Blue 201

Tableau des cours

ID du cours Nom du cours
201 Principes fondamentaux de SQL
202 Introduction à Python

Désormais, chaque tableau ne contient que les informations qui dépendent directement de sa clé primaire : ID du cours est désormais la clé primaire de Nom du cours dans la base de données cours et l'identifiant d'inscription ( ID d'inscription est la clé primaire de la table inscriptions tableau.

Grâce à cette décomposition, les tableaux répondent désormais aux exigences de la 3NF, ce qui permet d'éliminer les redondances et de s'assurer que chaque tableau ne stocke que les informations directement pertinentes.

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 sur la création de bases de données PostgreSQL. Si vous êtes un peu plus avancé, vous pouvez essayer 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.

Avantages et limites de l'utilisation de la troisième forme normale

Alors, pourquoi faire tous ces efforts pour atteindre la 3NF ? Voici les principaux avantages :

  • Amélioration de l'intégrité des données: En éliminant les dépendances transitives, la 3NF permet de s'assurer que les mises à jour et les suppressions n'entraînent pas de conflits ou de données obsolètes entre les tableaux.
  • Redondance réduite: Moins de redondance signifie que votre base de données est plus facile à maintenir et que l'utilisation de l'espace de stockage est réduite.
  • Simplification de la maintenance des données: Le fait de conserver des informations similaires dans des tableaux spécifiques facilite la mise à jour des enregistrements sans avoir à rechercher des entrées redondantes.

Cela dit, si les structures 3NF favorisent la précision des données, elles peuvent également conduire à des données plus segmentées, ce qui ralentit parfois les requêtes complexes en raison des jointures de tableaux supplémentaires. Dans les cas où le besoin de rapidité l'emporte sur le besoin de normalisation, BCNF ou 4NF peuvent être des options plus pratiques.

Comparaison : Première, deuxième, troisième et BC formes normales

Examinons les différences de forme.

Tableau de comparaison : première, deuxième et troisième formes normales

Voici un tableau comparatif pour vous aider à comprendre les exigences de la 1NF, de la 2NF et de la 3NF.

Fonctionnalité 1NF 2NF 3NF
Données atomiques
Pas de dépendances partielles
Pas de dépendances transitives

Troisième forme normale vs. Forme normale de Boyce-Codd (BCNF)

La BCNF est une forme "plus stricte" de la 3NF qui élimine encore davantage les anomalies liées au chevauchement des clés candidates. Elle peut être particulièrement utile dans les cas complexes où la 3NF seule ne permet pas d'éliminer complètement les dépendances. La BCNF s'applique lorsqu'un attribut non premier dépend d'un attribut faisant partie d'une clé candidate composite. Je sais que cela peut paraître complexe, alors prenons un exemple.

Structure actuelle (en 3NF)

Après décomposition pour obtenir 3NF, nous avions ces deux tableaux :

Tableau des inscriptions

ID d'inscription Nom de l'élève ID du cours
1001 Alice Smith 201
1002 Bob Green 202
1003 Charlie Blue 201

Tableau des cours

ID du cours Nom du cours
201 Principes fondamentaux de SQL
202 Introduction à Python

Dans cette structure, chaque tableau est en 3NF, sans dépendances transitives, et les données sont normalisées de manière appropriée.

Introduire une nouvelle exigence

Ajoutons maintenant un nouvel attribut aux cours: la salle de classe dans laquelle se déroule chaque cours. Ce nouvel attribut pourrait donner lieu à un scénario nécessitant l'utilisation de la BCNF.

Tableau des cours mis à jour (3NF)

ID du cours Nom du cours Salle de classe
201 Principes fondamentaux de SQL Salle 101
202 Introduction à Python Salle 102
203 Comprendre la science des données Salle 101

Ici, l'identifiant du cours est toujours la clé primaire et tous les autres attributs en dépendent directement. Mais supposons qu'il y ait une nouvelle règle selon laquelle chaque salle de classe ne peut accueillir qu'une seule matière à la fois. Supposons également que lenom du cours "SQL Fundamentals" puisse être proposé sous différents ID de cours (comme 201, 204, etc.), s'ils sont programmés à des moments différents. Dans ce cas, chaque offre de "SQL Fundamentals" aurait toujours lieu dans la "salle 101", indépendamment de l'ID de cours spécifique . Par conséquent, Course Name détermine également la salle de classe de manière unique .

Cela signifie que nous avons maintenant deux clés candidates :

  1. ID du cours
  2. Nom du cours

Avec les deux clés candidates, nous sommes confrontés à un problème que la méthode 3NF n'aborde pas : Salle de classe dépend de Nom du cours plutôt que de l ID du cours.

Application du BCNF

Pour éliminer ce problème de dépendance, nous devrons décomposer davantage l'élément Cours en deux tableaux distincts, mieux adaptés à la norme BCNF :

  1. A nouveau Cours qui ne contient que le tableau ID du cours et nom du cours.
  2. A CourseDetails qui contient les tableaux suivants nom du cours et salle de classe et la salle de classe.

Voici à quoi cela ressemble :

Tableau des cours révisé (BCNF)

Tableau CourseDetails (BCNF)

Nom du cours Salle de classe
Principes fondamentaux de SQL Salle 101
Introduction à Python Salle 102
Comprendre la science des données Salle 101

Avec cette nouvelle structure, chaque tableau satisfait aux conditions de la BCNF :

  • Dans les Cours tableau, ID cours est la clé primaire et tous les attributs dépendent uniquement d'elle.
  • Dans l'espace Détails du cours tableau, Nom du cours est la clé primaire, et Salle de classe ne dépend que de Nom du cours.

Cette configuration élimine tout problème de dépendance causé par le chevauchement des clés des candidats, garantissant ainsi une structure strictement normalisée.

Conclusion

La troisième forme normale est un outil précieux pour les concepteurs de bases de données qui souhaitent conserver des données propres, cohérentes et exemptes de dépendances problématiques. Avec 3NF, l'intégrité des données est améliorée, ce qui facilite la gestion et réduit la redondance. Rappelez-vous que si la 3NF fonctionne bien dans la plupart des situations, les bases de données plus complexes peuvent bénéficier de formes supplémentaires telles que la BCNF ou la 4NF.

Si cet article vous a été utile, envisagez de passer à l'étape suivante en obtenant notre certification SQL Associate. C'est un excellent moyen de valider vos compétences en SQL et en gestion de bases de données et de démontrer votre expertise à des employeurs potentiels !


Marie Fayard's photo
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.

Questions fréquemment posées sur la troisième forme normale

La 3NF peut-elle s'appliquer à tous les types de bases de données ?

Si la 3NF est efficace dans les bases de données relationnelles, elle n'est pas toujours nécessaire pour les bases de données NoSQL, qui privilégient souvent la flexibilité et l'évolutivité à une normalisation stricte. Dans certains cas, un schéma dénormalisé peut être préféré pour des raisons de performance, en particulier lors de l'interrogation rapide de grandes quantités de données.

Quels sont les inconvénients de suivre strictement la 3NF ?

Le respect strict de la 3NF peut parfois conduire à des schémas complexes comportant de nombreux tableaux, ce qui peut nécessiter des jointures multiples dans les requêtes. Cela peut nuire aux performances, en particulier dans les grandes bases de données ou les systèmes à fort volume de transactions. Dans ce cas, d'autres approches telles que la dénormalisation ou l'utilisation de la BCNF peuvent être plus pratiques.

La 3NF peut-elle être appliquée à des bases de données existantes, ou dois-je les redéfinir ?

La 3NF peut tout à fait être appliquée aux bases de données existantes, bien qu'elle puisse nécessiter une restructuration importante. Ce processus, appelé refonte de la base de données, consiste à décomposer les tableaux afin d'éliminer les redondances et les dépendances. En fonction de la taille et de la complexité de la base de données, cela peut nécessiter une certaine planification et des tests afin de garantir l'intégrité des données et les performances du système.

Quels outils ou techniques peuvent aider à automatiser le processus de réalisation de la 3NF ?

Il existe plusieurs outils de conception de base de données, tels que MySQL Workbench, Oracle SQL Developer et ER/Studio, qui permettent de visualiser le schéma de la base de données et d'identifier les problèmes de normalisation. Certains de ces outils peuvent suggérer ou automatiser des étapes pour atteindre la 3NF, bien que la supervision humaine reste importante pour garantir l'intégrité et la cohérence des données.

Quelle est la différence entre une clé candidate et une clé primaire ?

Une clé candidate est un ensemble minimal d'attributs permettant d'identifier de manière unique chaque ligne d'un tableau. Il peut y avoir plusieurs clés candidates dans un tableau. Une clé primaire, en revanche, est la clé candidate spécifique choisie par le concepteur de la base de données pour identifier les lignes de manière unique. Une seule clé primaire est autorisée par tableau, et elle ne peut pas avoir de valeurs NULL.

Pourquoi avons-nous besoin de la forme normale de Boyce-Codd (BCNF) si un tableau est déjà en troisième forme normale (3NF) ?

La BCNF est plus stricte que la 3NF et traite les cas où il existe des dépendances sur les clés candidates. Bien que la 3NF supprime les dépendances transitives, elle peut encore autoriser la redondance si une dépendance fonctionnelle a un déterminant qui n'est pas une superclé. La BCNF élimine ce problème en s'assurant que toutes les dépendances fonctionnelles ont une superclé sur le côté gauche.

Un tableau peut-il avoir plus d'une clé candidate ?

Oui, un tableau peut avoir plusieurs clés candidates. Chaque clé candidate est un ensemble unique et minimal d'attributs permettant d'identifier les lignes.

Sujets

Apprenez avec DataCamp

cours

Understanding Data Engineering

2 hr
263.9K
Discover how data engineers lay the groundwork that makes data science possible. No coding involved!
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus