Normalisation de base de données (expliquée en anglais simple)
Introduction à la normalisation de base de données
La normalisation de base de données est un processus utilisé pour organiser une base de données en tables et colonnes. L’idée principale avec ceci est qu’un tableau devrait être sur un sujet spécifique et seulement des sujets de soutien inclus. Prenez une feuille de calcul contenant les informations à titre d’exemple, où les données contiennent des commerciaux et des clients ayant plusieurs objectifs:
- Identifiez les commerciaux de votre organisation
- Répertoriez tous les clients auxquels votre entreprise fait appel pour vendre un produit
- Identifiez les vendeurs qui appellent des clients spécifiques.
En limitant un tableau à un seul objectif, vous réduisez le nombre de données en double contenues dans votre base de données. Cela élimine certains problèmes liés aux modifications de la base de données.
Pour atteindre ces objectifs, nous utiliserons certaines règles établies. Lorsque vous appliquez ces règles, de nouvelles tables sont formées. La progression de l’indiscipliné à l’optimisé passe par plusieurs formes normales.
Il existe trois formes normales que la plupart des bases de données utilisent. Au fur et à mesure que les tables satisfont chaque formulaire de normalisation de base de données successif, elles deviennent moins sujettes aux anomalies de modification de base de données et plus axées sur un seul objectif ou sujet. Avant de continuer, assurez-vous de comprendre la définition d’une table de base de données.
Raisons de la normalisation de la base de données
Il y a trois raisons principales pour normaliser une base de données. La première consiste à minimiser les données en double, la seconde à minimiser ou à éviter les problèmes de modification des données et la troisième à simplifier les requêtes.
Au fil des différents états de normalisation, nous discuterons de la manière dont chaque formulaire résout ces problèmes, mais pour commencer, examinons certaines données qui n’ont pas été normalisées et discutons de certains pièges potentiels.
Je pense qu’une fois que vous aurez compris les problèmes, vous apprécierez mieux la normalisation. Considérez le tableau suivant:
La première chose à noter est que ce tableau sert à plusieurs fins, notamment:
- Identifier les commerciaux de l’organisation
- Répertorier les ventes bureaux et numéros de téléphone
- Associer un commercial à un bureau de vente
- Afficher les clients de chaque commercial
En tant que DBA, cela déclenche un signal d’alarme. En général, j’aime voir des tableaux qui ont un seul but. Le fait que la table serve à plusieurs fins présente de nombreux défis; à savoir, duplication des données, problèmes de mise à jour des données et effort accru pour interroger les données.
Anomalies de duplication et de modification des données
Notez que pour chaque SalesPerson, nous avons répertorié à la fois SalesOffice et OfficeNumber. Il existe des données de vendeur en double. Les informations dupliquées posent deux problèmes:
- Cela augmente le stockage et diminue les performances.
- Il devient plus difficile de maintenir les modifications des données.
Par exemple:
Considérez si nous déménageons le bureau de Chicago à Evanston, IL. Pour refléter correctement cela dans notre tableau, nous devons mettre à jour les entrées de tous les vendeurs actuellement à Chicago. Notre tableau est un petit exemple, mais vous pouvez voir s’il était plus grand, que cela pourrait potentiellement impliquer des centaines de mises à jour.
Ces situations sont des anomalies de modification. La normalisation de la base de données les corrige. Trois anomalies de modification peuvent survenir:
Insérer une anomalie
Il y a des faits que nous ne pouvons pas enregistrer tant que nous ne connaissons pas les informations de la ligne entière. Dans notre exemple, nous ne pouvons pas enregistrer un nouveau bureau de vente tant que nous ne connaissons pas également le vendeur. Pourquoi? Parce que pour créer l’enregistrement, nous devons fournir une clé primaire. Dans notre cas, il s’agit du EmployeeID.
Mettre à jour l’anomalie
Dans ce cas, nous avons les mêmes informations sur plusieurs lignes. Par exemple, si le numéro de bureau change, plusieurs mises à jour doivent être effectuées. Si nous ne mettons pas à jour toutes les lignes, des incohérences apparaissent.
Anomalie de suppression
La suppression d’une ligne entraîne la suppression de plus d’un ensemble de faits. Par exemple, si John Hunt prend sa retraite, la suppression de cette ligne nous fait perdre des informations sur le bureau de New York.
Problèmes de recherche et de tri
La dernière raison que nous examinerons est de faciliter la recherche et le tri de vos données. Dans le tableau SalesStaff, si vous souhaitez rechercher un client spécifique tel que Ford, vous devrez écrire une requête telle que
SELECT SalesOfficeFROM SalesStaffWHERE Customer1 = ‘Ford’ OR Customer2 = ‘Ford’ OR Customer3 = ‘Ford’
Clairement si le client était en quelque sorte dans une colonne, notre requête serait plus simple. Déterminez également si vous souhaitez exécuter une requête et trier par client.
Notre table actuelle rend cela difficile. Vous devrez utiliser trois requêtes UNION distinctes!Vous pouvez éliminer ou réduire ces anomalies en séparant les données dans différentes tables. Cela place les données dans des tables ayant un seul but.
Le processus de refonte de la table est la normalisation de la base de données.
Définition de la normalisation de base de données
Il existe trois formes courantes de normalisation de base de données: 1ère, 2ème et 3ème forme normale. Ils sont également abrégés en 1NF, 2NF et 3NF respectivement.
Il existe plusieurs formes supplémentaires, telles que BCNF, mais je considère que celles-ci sont avancées, et pas trop nécessaires pour apprendre au début.
Les formes sont progressives, ce qui signifie que pour se qualifier pour la 3ème forme normale, une table doit d’abord satisfaire les règles de la 2ème forme normale, et la 2ème forme normale doit adhérer à celles de la 1ère forme normale. Avant de discuter en détail des différentes formes et règles, résumons les différentes formes:
- Première forme normale – Les informations sont stockées dans une table relationnelle avec chaque colonne contenant des valeurs atomiques. Il n’y a pas de groupes de colonnes répétitifs.
- Deuxième forme normale – La table est dans la première forme normale et toutes les colonnes dépendent de la clé primaire de la table.
- Troisième forme normale – la table est en seconde forme normale et toutes ses colonnes ne sont pas transitivement dépendantes de la clé primaire
Si les règles n’ont pas trop de sens, ne vous inquiétez pas. J’ai créé un lien vers l’article pour vous aider à les comprendre.
Pour l’instant, il est important de comprendre qu’il existe trois règles de normalisation de base de données qui se chevauchent. Certaines personnes font que la normalisation de la base de données semble compliquée.
mais cela n’a pas à l’être, et une fois que vous l’avez comprise, cela devient intuitif.