Normalisation du SGBD : exemple de base de données 1NF, 2NF, 3NF

Normalisation des SGBD

La normalisation en bref

La normalisation est le processus de structuration d'une base de données afin de réduire la redondance et d'améliorer la cohérence. En termes simples, elle décompose les grandes tables désordonnées en tables plus petites et bien organisées. Cela garantit un stockage logique des données, rendant les bases de données efficaces, faciles à maintenir et exemptes de doublons et d'erreurs.

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

Normalisation de la base de données est une technique de conception de base de données qui réduit la redondance des données et élimine les caractéristiques indésirables telles que les anomalies d'insertion, de mise à jour et de suppression. Les règles de normalisation divisent les tables plus grandes en tables plus petites et les relient à l'aide de relations. Le but de la normalisation dans SQL est d'éliminer les données redondantes (répétitives) et de garantir que les données sont stockées logiquement.

L'inventeur du modèle relationnel Edgar Codd a proposé la théorie de la normalisation des données avec l'introduction de la première forme normale, et il a continué à étendre la théorie avec la deuxième et la troisième forme normale. Later il rejoint Raymond F. Boyce pour développer la théorie de la forme normale de Boyce-Codd.

Pourquoi avons-nous besoin de la normalisation ?

Sans normalisation, les bases de données deviennent rapidement incohérentes et redondantes. Des problèmes tels que anomalies d'insertion (les enregistrements incomplets ne peuvent pas être ajoutés), mettre à jour les anomalies (les changements à un endroit ne se reflètent pas partout), et anomalies de suppression (La suppression accidentelle de données efface des informations précieuses) se produit fréquemment. La normalisation élimine ces problèmes, garantissant l'intégrité des données, réduisant les doublons et simplifiant la gestion des bases de données.

Quels sont les types de formes normales dans les SGBD ?

Voici une liste des formes normales en SQL :

  • 1NF (Première Forme Normale) : Garantit que la table de base de données est organisée de telle sorte que chaque colonne contienne des valeurs atomiques (indivisibles) et que chaque enregistrement soit unique. Cela élimine les groupes répétitifs, structurant ainsi les données en tables et colonnes.
  • 2NF (deuxième forme normale) : Construit sur 1NF par Nous devons supprimer les données redondantes d'une table appliquée à plusieurs lignes. et en les plaçant dans des tableaux séparés. Il nécessite que tous les attributs non clés soient entièrement fonctionnels sur la clé primaire.
  • 3NF (Troisième Forme Normale) : Étend 2NF en garantissant que tous les attributs non clés sont non seulement entièrement fonctionnels sur la clé primaire, mais également indépendants les uns des autres. Cela élimine la dépendance transitive.
  • BCNF (forme normale de Boyce-Codd) : Un raffinement de 3NF qui corrige les anomalies non gérées par 3NF. Cela nécessite que chaque déterminant soit une clé candidate, garantissant ainsi un respect encore plus strict des règles de normalisation.
  • 4NF (quatrième forme normale) : Gère les dépendances à valeurs multiples. Cela garantit qu'il n'y a pas plusieurs faits indépendants à valeurs multiples sur une entité dans un enregistrement.
  • 5NF (cinquième forme normale) : Également connu sous le nom de « forme normale de projection-jointure » (PJNF), il concerne la reconstruction d'informations à partir d'éléments de données plus petits et disposés différemment.
  • 6NF (sixième forme normale) : Théorique et peu mis en œuvre. Il traite les données temporelles (gestion des changements au fil du temps) en décomposant davantage les tables pour éliminer toute redondance non temporelle.

La théorie de la normalisation des données dans MySQL Le serveur est encore en cours de développement. Par exemple, il y a des discussions même le 6th Forme normale. Cependant, dans la plupart des applications pratiques, la normalisation atteint son maximum en 3rd Forme normale. L'évolution de la normalisation dans les théories SQL est illustrée ci-dessous.

Formes normales de la base de données
Formes normales de la base de données

Normalisation de base de données avec des exemples

Base de données Exemple de normalisation peut être facilement compris à l’aide d’une étude de cas. Supposons qu’une vidéothèque gère une base de données de films loués. Sans aucune normalisation dans la base de données, toutes les informations sont stockées dans un seul tableau comme indiqué ci-dessous. Comprenons la base de données de normalisation avec un exemple de normalisation avec une solution :

Normalisation de base de données avec exemple

Ici vous voyez La colonne Films loués comporte plusieurs valeurs. Passons maintenant aux 1ères formes normales :

Première forme normale (1NF)

  • Chaque cellule du tableau doit contenir une seule valeur.
  • Chaque enregistrement doit être unique.

Le tableau ci-dessus en 1NF-

Exemple 1NF

Règles 1NF
Exemple de 1NF dans un SGBD

Avant de continuer, comprenons quelques choses -

Qu'est-ce qu'une CLÉ en SQL

A CLÉ en SQL est une valeur utilisée pour identifier de manière unique les enregistrements d'une table. Une CLÉ SQL est une seule colonne ou une combinaison de plusieurs colonnes utilisée pour identifier de manière unique des lignes ou des tuples dans la table. La clé SQL est utilisée pour identifier les informations en double et permet également d'établir une relation entre plusieurs tables de la base de données.

Remarque : Les colonnes d'une table qui ne sont PAS utilisées pour identifier un enregistrement de manière unique sont appelées colonnes non clés.

Qu'est-ce qu'une clé primaire ?

Clé primaire
Clé primaire dans le SGBD

Une valeur primaire est une valeur de colonne unique utilisée pour identifier de manière unique un enregistrement de base de données.

Il a les attributs suivants

  • A clé primaire ne peut pas être nulle
  • Une valeur de clé primaire doit être unique
  • Les valeurs de la clé primaire doivent rarement être modifiées
  • La clé primaire doit recevoir une valeur lorsqu'un nouvel enregistrement est inséré.

Qu'est-ce que la clé composite ?

Une clé composite est une clé primaire composée de plusieurs colonnes utilisée pour identifier un enregistrement de manière unique

Dans notre base de données, nous avons deux personnes portant le même nom Robert Phil, mais elles vivent dans des endroits différents.

Clé composite dans la base de données
Clé composite dans la base de données

Par conséquent, nous avons besoin à la fois du nom complet et de l’adresse pour identifier un enregistrement de manière unique. C'est une clé composite.

Passons à la deuxième forme normale 2NF

Deuxième forme normale (2NF)

  • Règle 1- Être en 1NF
  • Règle 2 - Clé primaire à colonne unique qui ne dépend fonctionnellement d'aucun sous-ensemble de la relation clé candidate

Il est clair que nous ne pouvons pas avancer pour réaliser notre simple base de données en 2nd Forme de normalisation sauf si nous partitionnons le tableau ci-dessus.

Règles 2NF

Règles 2NF

Nous avons divisé notre table 1NF en deux tables, à savoir. Tableau 1 et tableau 2. Le tableau 1 contient des informations sur les membres. Le tableau 2 contient des informations sur les films loués.

Nous avons introduit une nouvelle colonne appelée Membership_id qui est la clé primaire du tableau 1. Les enregistrements peuvent être identifiés de manière unique dans le tableau 1 à l'aide de l'identifiant d'adhésion.

Base de données – clé étrangère

Dans le tableau 2, Membership_ID est la clé étrangère

Base de données – clé étrangère

Base de données – clé étrangère
Clé étrangère dans le SGBD

La clé étrangère fait référence à la clé primaire d'une autre table ! Cela aide à connecter vos tables

  • Une clé étrangère peut avoir un nom différent de sa clé primaire
  • Il garantit que les lignes d'une table ont des lignes correspondantes dans une autre
  • Contrairement à la clé primaire, elles ne doivent pas nécessairement être uniques. Le plus souvent, ils ne le sont pas
  • Les clés étrangères peuvent être nulles même si les clés primaires ne le peuvent pas

Base de données – clé étrangère

Pourquoi avez-vous besoin d’une clé étrangère ?

Supposons qu'un novice insère un enregistrement dans le tableau B tel que

Pourquoi avez-vous besoin d'une clé étrangère

Vous ne pourrez insérer dans votre clé étrangère que les valeurs qui existent dans la clé unique de la table parent. Cela contribue à l’intégrité référentielle.

Le problème ci-dessus peut être surmonté en déclarant l'identifiant d'adhésion de la Table2 comme clé étrangère de l'identifiant d'adhésion de la Table1.

Désormais, si quelqu'un essaie d'insérer une valeur dans le champ ID d'adhésion qui n'existe pas dans la table parent, une erreur s'affichera !

Que sont les dépendances fonctionnelles transitives ?

Un transitif dépendance fonctionnelle c'est lors de la modification d'une colonne non clé, cela peut entraîner la modification de l'une des autres colonnes non clés

Considérez le tableau 1. La modification de la colonne non clé Nom complet peut modifier la salutation.

Dépendances fonctionnelles transitives

Passons au 3NF

Troisième forme normale (3NF)

  • Règle 1- Être en 2NF
  • Règle 2- N'a pas de dépendances fonctionnelles transitives

Pour déplacer notre table 2NF en 3NF, nous devons à nouveau diviser notre table.

Exemple 3NF

Vous trouverez ci-dessous un exemple 3NF dans une base de données SQL :

Exemple 3NF

Exemple 3NF

Exemple 3NF

Nous avons à nouveau divisé nos tables et créé une nouvelle table qui stocke les salutations.

Il n'y a pas de dépendances fonctionnelles transitives, et donc notre table est en 3NF

Dans le tableau 3, l'ID de salutation est la clé primaire et dans le tableau 1, l'ID de salutation est étranger à la clé primaire du tableau 3.

Maintenant, notre petit exemple se situe à un niveau qui ne peut pas être décomposé davantage pour atteindre des types de normalisation de forme normale supérieure dans le SGBD. En fait, il se trouve déjà sous des formes de normalisation supérieures. Des efforts distincts pour passer aux niveaux suivants de normalisation des données sont normalement nécessaires dans les bases de données complexes. Cependant, nous discuterons brièvement des prochains niveaux de normalisation dans le SGBD dans ce qui suit.

Forme normale de Boyce-Codd (BCNF)

Même lorsqu'une base de données est en 3rd Forme normale, il y aurait néanmoins des anomalies s'il y en avait plus d'un. Candidat Clé

Parfois, BCNF est également appelé 3.5 Forme normale.

Quatrième forme normale (4NF)

Si aucune instance de table de base de données ne contient au moins deux données indépendantes et à valeurs multiples décrivant l'entité concernée, alors elle est en 4th Forme normale.

Cinquième forme normale (5NF)

Une table est en 5th Forme normale uniquement s'il est en 4NF et qu'il ne peut pas être décomposé en un nombre quelconque de tableaux plus petits sans perte de données.

Sixième forme normale (6NF) proposée

6th La forme normale n'est pas standardisée, mais elle est cependant discutée par les experts en bases de données depuis un certain temps. Espérons que nous aurions une définition claire et standardisée pour 6th Forme normale dans un avenir proche…

Quels sont les avantages de la normalisation ?

  • Améliorer la cohérence des données : La normalisation garantit que chaque élément de données est stocké à un seul endroit, réduisant ainsi les risques d'incohérences. Lorsque les données sont mises à jour, elles ne doivent être mises à jour qu'à un seul endroit, garantissant ainsi la cohérence.
  • Réduisez la redondance des données : La normalisation permet d'éliminer les données en double en les divisant en plusieurs tables liées. Cela peut économiser de l'espace de stockage et également rendre la base de données plus efficace.
  • Améliorez les performances des requêtes : Les bases de données normalisées sont souvent plus faciles à interroger. Les données étant organisées de manière logique, les requêtes peuvent être optimisées pour s’exécuter plus rapidement.
  • Rendre les données plus significatives : La normalisation implique de regrouper les données d'une manière logique et intuitive. Cela peut rendre la base de données plus facile à comprendre et à utiliser, en particulier pour les personnes qui n'ont pas conçu la base de données.
  • Réduisez les risques d’anomalies : Les anomalies sont des problèmes pouvant survenir lors de l’ajout, de la mise à jour ou de la suppression de données. La normalisation peut réduire les risques de ces anomalies en garantissant que les données sont logiquement organisées.

Quels sont les inconvénients de la normalisation ?

  • Complexité accrue : La normalisation peut conduire à des relations complexes. Un grand nombre de tables avec des clés étrangères peut être difficile à gérer, ce qui peut entraîner une certaine confusion.
  • Flexibilité réduite : En raison des règles strictes de normalisation, il peut y avoir moins de flexibilité dans le stockage des données qui ne respectent pas ces règles.
  • Exigences de stockage accrues : Bien que la normalisation réduise la redondance, il peut être nécessaire d'allouer davantage d'espace de stockage pour accueillir les tables et index supplémentaires.
  • Frais généraux de performance : Rejoindre plusieurs tables peut être coûteux en termes de performances. Plus les données sont normalisées, plus de jointures sont nécessaires, ce qui peut ralentir les délais de récupération des données.
  • Contexte de perte de données : La normalisation décompose les données en tables distinctes, ce qui peut entraîner une perte de contexte métier. L’examen des tables associées est nécessaire pour comprendre le contexte d’une donnée.
  • Besoin de connaissances spécialisées : La mise en œuvre d'une base de données normalisée nécessite une compréhension approfondie des données, des relations entre les données et des règles de normalisation. Cela nécessite des connaissances spécialisées et peut prendre beaucoup de temps.

C'est tout pour la normalisation SQL !!!

FAQs

La normalisation dans un SGBD est un processus d'organisation des données dans une base de données afin de réduire la redondance et d'améliorer l'intégrité des données. Elle consiste à décomposer les grandes tables en tables plus petites et interconnectées, et à définir les relations entre elles. Cela garantit un stockage logique et cohérent des données, ce qui optimise les mises à jour, les insertions et les suppressions, tout en prévenant les anomalies.

La normalisation des données structure les tables de base de données pour éviter les répétitions. Par exemple, au lieu de stocker l'adresse d'un client dans chaque enregistrement de commande, la normalisation place les informations client dans une table « Client » distincte, liée par une clé. Cela réduit la redondance : si une adresse change, elle n'est mise à jour qu'une seule fois. Il en résulte une base de données plus propre et plus efficace, avec des données précises et cohérentes.

L'objectif de la normalisation est d'éliminer les données redondantes, de minimiser les anomalies et d'assurer l'efficacité de la base de données. Elle simplifie la maintenance en organisant les informations connexes, réduit le gaspillage de stockage et garantit la cohérence des données. La normalisation améliore également les performances des requêtes en structurant les données de manière logique, permettant ainsi aux développeurs et aux utilisateurs d'accéder à des informations précises sans doublons ni conflits.

La troisième forme normale (3NF) est une étape de normalisation garantissant que chaque attribut non clé dépend uniquement de la clé primaire et non d'autres attributs non clés. Par exemple, dans une table d'employés, le « Nom du service » doit être séparé dans une table de services plutôt que de dépendre de l'« ID du service ». Cela évite les dépendances transitives et garantit l'exactitude, la cohérence et l'efficacité de la gestion des données.

Résumé

  • Conception de base de données est essentiel à la mise en œuvre réussie d’un système de gestion de base de données répondant aux exigences en matière de données d’un système d’entreprise.
  • La normalisation dans le SGBD est un processus qui permet de produire des systèmes de bases de données rentables et dotés de meilleurs modèles de sécurité.
  • Les dépendances fonctionnelles sont un élément très important du processus de normalisation des données
  • La plupart des systèmes de bases de données sont des bases de données normalisées jusqu'à la troisième forme normale dans le SGBD.
  • Une clé primaire identifie de manière unique un enregistrement dans une table et ne peut pas être nulle.
  • Une clé étrangère permet de connecter la table et fait référence à une clé primaire