Normalisation du SGBD : exemple de base de données 1NF, 2NF, 3NF
Qu'est-ce que la normalisation de la base de données?
Normalisation 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.
Types de formes normales dans le 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.
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 :
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
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 ?
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.
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.
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
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
Pourquoi avez-vous besoin d’une clé étrangère ?
Supposons qu'un novice insère un enregistrement dans le tableau B tel que
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.
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 :
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…
Avantages de la forme normale
- 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.
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 !!!
Conclusion
- 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