database normalization tutorial
Ce didacticiel expliquera ce qu'est la normalisation de base de données et diverses formes normales telles que 1NF 2NF 3NF et BCNF avec des exemples de code SQL:
La normalisation de base de données est une technique bien connue utilisée pour concevoir un schéma de base de données.
Le principal objectif de l'application de la technique de normalisation est de réduire la redondance et la dépendance des données. La normalisation nous aide à décomposer les grandes tables en plusieurs petites tables en définissant une relation logique entre ces tables.
Ce que vous apprendrez:
- Qu'est-ce que la normalisation de la base de données?
- Conclusion
Qu'est-ce que la normalisation de la base de données?
La normalisation de la base de données ou la normalisation SQL nous aide à regrouper les données associées dans une seule table. Toutes les données attributives ou indirectement liées sont placées dans différentes tables et ces tables sont reliées par une relation logique entre les tables parent et enfant.
En 1970, Edgar F. Codd a proposé le concept de normalisation. Il a partagé un article intitulé «Un modèle relationnel de données pour les grandes banques partagées» dans lequel il a proposé «Première forme normale (1NF)».
Avantages de la normalisation du SGBD
La normalisation de base de données offre les avantages de base suivants:
- La normalisation augmente la cohérence des données car elle évite la duplicité des données en stockant les données dans un seul endroit.
- La normalisation permet de regrouper des données similaires ou liées sous le même schéma, ce qui permet un meilleur regroupement des données.
- La normalisation améliore la recherche plus rapidement car les index peuvent être créés plus rapidement. Par conséquent, la base de données ou la table normalisée est utilisée pour OLTP (traitement des transactions en ligne).
Inconvénients de la normalisation de la base de données
La normalisation du SGBD présente les inconvénients suivants:
- Nous ne pouvons pas trouver les données associées pour, par exemple, un produit ou un employé au même endroit et nous devons joindre plusieurs tables. Cela entraîne un retard dans la récupération des données.
- Ainsi, la normalisation n'est pas une bonne option dans les transactions OLAP (traitement analytique en ligne).
Avant de poursuivre, comprenons les termes suivants:
- Entité: L'entité est un objet réel, où les données associées à un tel objet sont stockées dans la table. L'exemple de tels objets sont les employés, les départements, les étudiants, etc.
- Les attributs: Les attributs sont les caractéristiques de l'entité, qui donnent des informations sur l'entité. Par exemple, si les tables sont des entités, les colonnes sont leurs attributs.
Types de formes normales
# 1) 1NF (première forme normale)
Par définition, une entité qui n'a pas de colonnes ou de groupes de données répétitifs peut être qualifiée de première forme normale. Dans la première forme normale, chaque colonne est unique.
Voici à quoi aurait ressemblé notre table Employés et Département si sous la première forme normale (1NF):
empNum | nom de famille | Prénom | deptName | déptVille | départementPays |
---|---|---|---|---|---|
1001 | Andrews | Jack | Comptes | New York | États-Unis |
1002 | Schwatz | Mike | La technologie | New York | États-Unis |
1009 | tasse | Harry | HEURE | Berlin | Allemagne |
1007 | Harvey | Parker | Administrateur | Londres | Royaume-Uni |
1007 | Harvey | Parker | HEURE | Londres | Royaume-Uni |
Ici, toutes les colonnes des tables Employés et Département ont été regroupées en une seule et il n'est pas nécessaire de connecter des colonnes, comme deptNum, car toutes les données sont disponibles au même endroit.
Mais une table comme celle-ci contenant toutes les colonnes requises serait non seulement difficile à gérer, mais aussi difficile à effectuer des opérations et également inefficace du point de vue du stockage.
# 2) 2NF (deuxième forme normale)
Par définition, une entité qui est 1NF et l'un de ses attributs est définie comme la clé primaire et les autres attributs dépendent de la clé primaire.
Voici un exemple de l'apparence de la table des employés et du service:
Table des employés:
empNum | nom de famille | Prénom |
---|---|---|
1001 | Andrews | Jack |
1002 | Schwatz | Mike |
1009 | tasse | Harry |
1007 | Harvey | Parker |
1007 | Harvey | Parker |
Tableau des départements:
deptNum | deptName | déptVille | départementPays |
---|---|---|---|
1 | Comptes | New York | États-Unis |
deux | La technologie | New York | États-Unis |
3 | HEURE | Berlin | Allemagne |
4 | Administrateur | Londres | Royaume-Uni |
Table EmpDept:
empDeptID | empNum | deptNum |
---|---|---|
1 | 1001 | 1 |
deux | 1002 | deux |
3 | 1009 | 3 |
4 | 1007 | 4 |
5 | 1007 | 3 |
Ici, nous pouvons observer que nous avons divisé le tableau sous forme 1NF en trois tableaux différents. la table Employés est une entité sur tous les employés d'une entreprise et ses attributs décrivent les propriétés de chaque employé. La clé primaire de cette table est empNum.
De même, la table Départements est une entité sur tous les départements d'une entreprise et ses attributs décrivent les propriétés de chaque département. La clé primaire de cette table est le deptNum.
Dans le troisième tableau, nous avons combiné les clés primaires des deux tables. Les clés primaires des tables Employés et Départements sont appelées clés étrangères dans cette troisième table.
Si l'utilisateur veut une sortie similaire à celle que nous avions dans 1NF, alors l'utilisateur doit joindre les trois tables, en utilisant les clés primaires.
Un exemple de requête ressemblerait à ceci:
SELECT empNum, lastName, firstName, deptNum, deptName, deptCity, deptCountry FROM Employees A, Departments B, EmpDept C WHERE A.empNum = C.empNum AND B.deptNum = C.deptNum WITH UR;
# 3) 3NF (troisième forme normale)
Par définition, une table est considérée en troisième normale si la table / entité est déjà dans la deuxième forme normale et les colonnes de la table / entité sont dépendantes de manière non transitoire de la clé primaire.
Comprenons la dépendance non transitive, à l'aide de l'exemple suivant.
Dites une table nommée, le client a les colonnes ci-dessous:
N ° de client - Clé primaire identifiant un client unique
ClientZIP - Code postal de la localité où réside le client
ClientVille - Ville dans laquelle réside le client
Dans le cas ci-dessus, la colonne CustomerCity dépend de la colonne CustomerZIP et la colonne CustomerZIP dépend de CustomerID.
Le scénario ci-dessus est appelé dépendance transitive de la colonne CustomerCity sur le CustomerID, c'est-à-dire la clé primaire. Après avoir compris la dépendance transitive, discutons maintenant du problème avec cette dépendance.
Il pourrait y avoir un scénario possible où une mise à jour indésirable est apportée à la table pour mettre à jour le CustomerZIP vers un code postal d'une ville différente sans mettre à jour le CustomerCity, laissant ainsi la base de données dans un état incohérent.
Afin de résoudre ce problème, nous devons supprimer la dépendance transitive qui pourrait être effectuée en créant une autre table, par exemple, la table CustZIP qui contient deux colonnes, à savoir CustomerZIP (en tant que clé primaire) et CustomerCity.
La colonne CustomerZIP de la table Customer est une clé étrangère du CustomerZIP de la table CustZIP. Cette relation garantit qu'il n'y a pas d'anomalie dans les mises à jour dans lesquelles un CustomerZIP est mis à jour sans apporter de modifications à la CustomerCity.
# 4) Forme normale Boyce-Codd (forme normale 3,5)
Par définition, la table est considérée comme la forme normale de Boyce-Codd, si elle est déjà dans la troisième forme normale et pour chaque dépendance fonctionnelle entre A et B, A devrait être une super clé.
Cette définition semble un peu compliquée. Essayons de le casser pour mieux le comprendre.
- Dépendance fonctionnelle: On dit que les attributs ou colonnes d'une table sont fonctionnellement dépendants lorsqu'un attribut ou une colonne d'une table identifie de manière unique un ou plusieurs autre (s) attribut (s) ou colonne (s) de la même table.
Par exemple, la colonne empNum ou Employee Number identifie de manière unique les autres colonnes telles que le nom de l'employé, le salaire de l'employé, etc. dans la table Employee. - Super clé: Une clé unique ou un groupe de clés multiples qui pourraient identifier de manière unique une seule ligne dans une table peut être appelée Super clé. En termes généraux, nous connaissons des clés telles que les clés composites.
Considérons le scénario suivant pour comprendre quand il y a un problème avec la troisième forme normale et comment Boyce-Codd Normal forme vient à la rescousse.
empNum | Prénom | empCity | deptName | deptHead |
---|---|---|---|---|
1001 | Jack | New York | Comptes | Raymond |
1001 | Jack | New York | La technologie | Donald |
1002 | Harry | Berlin | Comptes | Samara |
1007 | Parker | Londres | HEURE | Elizabeth |
1007 | Parker | Londres | Infrastructure | À M |
Dans l'exemple ci-dessus, les employés avec empNum 1001 et 1007 travaillent dans deux départements différents. Chaque département a un chef de département. Il peut y avoir plusieurs chefs de département pour chaque département. Comme pour la comptabilité, Raymond et Samara sont les deux chefs de service.
Dans ce cas, empNum et deptName sont des super clés, ce qui implique que deptName est un attribut principal. Sur la base de ces deux colonnes, nous pouvons identifier chaque ligne de manière unique.
De plus, le deptName dépend de deptHead, ce qui implique que deptHead est un attribut non principal. Ce critère disqualifie la table de faire partie de BCNF.
Pour résoudre ce problème, nous allons diviser le tableau en trois tableaux différents, comme indiqué ci-dessous:
Table des employés:
empNum | Prénom | empCity | deptNum |
---|---|---|---|
1001 | Jack | New York | D1 |
1001 | Jack | New York | D2 |
1002 | Harry | Berlin | D1 |
1007 | Parker | Londres | D3 |
1007 | Parker | Londres | D4 |
Tableau des départements:
deptNum | deptName | deptHead |
---|---|---|
D1 | Comptes | Raymond |
D2 | La technologie | Donald |
D1 | Comptes | Samara |
D3 | HEURE | Elizabeth |
D4 | Infrastructure | À M |
# 5) Quatrième forme normale (4 forme normale)
Par définition, une table est en quatrième forme normale, si elle ne contient pas au moins deux données indépendantes décrivant l'entité pertinente.
# 6) Cinquième forme normale (5 forme normale)
Une table peut être considérée dans la cinquième forme normale uniquement si elle satisfait aux conditions de la quatrième forme normale et peut être décomposée en plusieurs tables sans perte de données.
Foire aux questions et réponses
Q # 1) Qu'est-ce que la normalisation dans une base de données?
Répondre: La normalisation de base de données est une technique de conception. Grâce à cela, nous pouvons concevoir ou reconcevoir des schémas dans la base de données pour réduire les données redondantes et la dépendance des données en divisant les données en tables plus petites et plus pertinentes.
Q # 2) Quels sont les différents types de normalisation?
Répondre: Voici les différents types de techniques de normalisation qui peuvent être utilisées pour concevoir des schémas de base de données:
- Première forme normale (1NF)
- Deuxième forme normale (2NF)
- Troisième forme normale (3NF)
- Forme normale Boyce-Codd (3.5NF)
- Quatrième forme normale (4NF)
- Cinquième forme normale (5NF)
Q # 3) Quel est le but de la normalisation?
Répondre: Le but principal de la normalisation est de réduire la redondance des données, c'est-à-dire que les données ne doivent être stockées qu'une seule fois. Ceci afin d'éviter toute anomalie de données qui pourrait survenir lorsque nous tentons de stocker les mêmes données dans deux tables différentes, mais les modifications ne sont appliquées qu'à l'une et pas à l'autre.
Q # 4) Qu'est-ce que la dénormalisation?
Répondre: La dénormalisation est une technique pour augmenter les performances de la base de données. Cette technique ajoute des données redondantes à la base de données, contrairement à la base de données normalisée qui supprime la redondance des données.
Cela se fait dans d'énormes bases de données où l'exécution d'un JOIN pour obtenir des données de plusieurs tables est une affaire coûteuse. Ainsi, les données redondantes sont stockées dans plusieurs tables pour éviter les opérations JOIN.
Conclusion
Jusqu'à présent, nous avons tous parcouru trois formulaires de normalisation de base de données.
comment supprimer un index d'un tableau java
Théoriquement, il existe des formes plus élevées de normalisation de bases de données comme Boyce-Codd Normal Form, 4NF, 5NF. Cependant, 3NF est la forme de normalisation largement utilisée dans les bases de données de production.
Bonne lecture!!
lecture recommandée
- Test de base de données avec JMeter
- MongoDB Créer une sauvegarde de base de données
- Tutoriel MongoDB Create Database
- Top 10 des outils de conception de base de données pour créer des modèles de données complexes
- Performances MongoDB: performances de verrouillage, défauts de page et profilage de base de données
- Revue de la base de données relationnelle Open Source Altibase
- MongoDB Database Profiler pour surveiller les requêtes et les performances
- Comment tester Oracle Database