La normalisation est une approche de conception qui minimise la redondance des données et optimise les structures de données en plaçant systématiquement et correctement les éléments de données dans les groupements appropriés. La normalisation est le processus d’organisation efficace des données dans une base de données et le processus de décomposition de grandes tables en tables plus petites.
Objectifs de normalisation :
Le processus de normalisation a deux objectifs :
- Éliminer les données redondantes (par exemple, stocker les mêmes données dans plusieurs tables).
- Veiller à ce que les dépendances de données aient un sens (stocker uniquement les données associées dans une table).
Ces deux objectifs sont louables car ils réduisent la quantité d’espace consommée par une base de données et garantissent que les données sont stockées de manière logique et évitent les problèmes d’insertion, de mise à jour ou de suppression de données.
Forme normale :
Une série de lignes directrices ont été élaborées par la communauté des bases de données pour s’assurer que les bases de données sont normalisées. Ces lignes directrices sont représentées par différentes formes normales.
Les types de formes normales sont les suivants :
- Première forme normale ou 1NF
- Deuxième forme normale ou 2NF
- Troisième forme normale ou 3NF
- Quatrième forme normale ou 4NF
- Cinquième forme normale ou 5NF
Dans les applications pratiques, en général, vous n’utilisez que 1NF, 2NF et 3NF.
Première forme normale :
- Toutes les entités doivent avoir un identifiant ou une clé unique, qui peut être composé d’un ou plusieurs attributs.
- Éliminer les groupes répétitifs et les données non atomiques d’une entité.
Le terme atomique dérive d’atome, la plus petite particule indivisible qui puisse exister par elle-même.
La première forme normale élimine les groupes répétitifs et les données non atomiques d’une entité.
Pour normaliser un modèle de données en 1NF, éliminez les groupes répétitifs en entités individuelles. En d’autres termes, n’utilisez pas plusieurs attributs dans une seule entité pour stocker des données similaires. Considérez les exemples de données présentés dans le tableau pour un système d’information ÉTUDIANT pour un collège ou une université.
Ces données contiennent plusieurs violations de 1NF. Tout d’abord, vous suivez des cours qui représentent réellement un groupe de redoublants pour les ÉTUDIANTS. Ainsi, les informations sur le cours doivent être déplacées dans des entités distinctes. De plus, vous devez spécifier des identifiants pour les deux entités. L’identifiant est la clé primaire de l’entité
Une deuxième violation de 1NF concerne les données non atomiques affichées dans l’attribut “Nom Etudiant“. Un nom d’étudiant peut être divisé en plusieurs parties : prénom, initiale et nom de famille. Il n’est pas indivisible et viole donc la première forme normale.
Données ÉTUDIANT non normalisées
ID Etudiant | Nom Etudiant | ID Matière | Nom Matière | Numéro Cours | Nom Cours | Date Cours |
---|---|---|---|---|---|---|
0001 | Martin, Pierre | MAT | Mathématiques | MAT0011 MAT0027 ANG0010 | Mathématiques Algèbre Anglais Classique | 2022/08/01 2022/04/30 2021/12/30 |
0002 | Antoine, Paul | PHL | Philosophie | PHL0010 INF00100 | Introduction à la Philosophie Langages de programmation | 2022/04/30 2022/04/30 |
0003 | Robert, Pires | ANG | Littérature anglaise | ANG0102 | Ascension de l’homme | 2022/08/01 |
0004 | Lee, Xavier | MUS | Musique | MUS0002 ANG0102 | Origine du Jazz Ascension de l’Homme | 2022/04/30 2022/08/01 |
0005 | Gassama, Isaac | INF | Informatique | INF00100 | Langages de programmation | 2022/04/30 |
0006 | Luigi, Mario | ANG | Littérature anglaise | ANG0010 ANG0101 | Anglais Classiques Shakespeare | 2021/12/30 2022/08/01 |
Entité ETUDIANT en 1NF
ID Etudiant | Nom | Prénom | ID Matière | Nom Cours |
---|---|---|---|---|
0001 | Martin | Pierre | MAT | Mathématiques |
0002 | Antoine | Paul | PHL | Philosophie |
0003 | Robert | Pires | ANG | Littérature anglaise |
0004 | Lee | Xavier | MUS | Musique |
0005 | Gassama | Isaac | INF | Informatique |
0006 | Luigi | Mario | ANG | Littérature anglaise |
Entité COURS en 1NF
ID Etudiant | Numéro Cours | Nom Cours | Date Cours |
---|---|---|---|
0001 | MAT0011 | Mathématiques | 01/08/2022 |
0001 | MAT0027 | Algèbre | 30/04/2022 |
0001 | ANG0010 | Anglais Classique | 30/12/2021 |
0002 | PHL0010 | Introduction à la philosophie | 30/04/2022 |
0002 | INF00100 | Langages de programmation | 30/04/2022 |
0003 | ANG0102 | Ascension de l’homme | 01/08/2022 |
0004 | MUS0002 | Origine du jazz | 30/04/2022 |
0004 | ANG0102 | Ascension de l’homme | 01/08/2022 |
0005 | INF00100 | Langages de programmation | 30/04/2022 |
0006 | ANG0010 | Anglais Classique | 30/12/2021 |
0006 | ANG0101 | Shakespeare | 01/08/2022 |
Deuxième forme normale :
- Doit être en première forme normale
- Chaque attribut non clé dépend entièrement de la clé
La deuxième forme normale (2NF) garantit que tous les attributs de chaque entité dépendent de la clé primaire.
Notez que certains cours se répètent dans l’entité COURS, à savoir “Anglais Classique” et “Ascension de l’homme”. Cette situation indique une violation de 2NF. Pour corriger le problème, nous devons identifier les attributs qui ne dépendent pas de la clé entière et les supprimer. Les attributs supprimés, ainsi que la partie de la clé primaire dont ils dépendent, sont placés dans une nouvelle entité, INSCRIPTION. La clé primaire entière de l’entité d’origine reste avec l’entité d’origine.
Un autre avantage du processus de normalisation est que vous rencontrerez fréquemment de nouveaux attributs qui doivent être spécifiés pour les nouvelles entités créées. Par exemple, peut-être que la nouvelle entité COURS nous rappelle que chaque cours se voit attribuer un certain nombre de crédits qui comptent pour l’obtention du diplôme.
Aucune modification n’a été nécessaire pour l’entité ÉTUDIANT :
Entité INSCRIPTION en 2NF
ID Etudiant | Numéro Cours | Date Cours |
---|---|---|
0001 | MAT0011 | 2022-08-01 |
0001 | MAT0027 | 2022-04-30 |
0001 | ANG0010 | 2021-12-30 |
0002 | PHL0010 | 2022-04-30 |
0002 | INF00100 | 2022-04-30 |
0003 | ANG0102 | 2022-08-01 |
0004 | MUS0002 | 2022-04-30 |
0004 | ANG0102 | 2022-08-01 |
0005 | INF00100 | 2022-04-30 |
0006 | ANG0010 | 2021-12-30 |
0006 | ANG0101 | 2022-08-01 |
Entité COURS en 2NF
Numéro Cours | Nom Cours | Crédits |
---|---|---|
MAT0011 | Mathématiques | 3 |
MAT0027 | Algèbre | 4 |
ANG0010 | Anglais Classique | 3 |
PHL0010 | Introduction à la philosophie | 3 |
INF00100 | Langages de programmation | 3 |
ANG0102 | Ascension de l’homme | 3 |
MUS0002 | Origine du jazz | 3 |
Troisième forme normale :
- Doit être en deuxième forme normale
- Chaque attribut non clé dépend de manière non transitive de la clé primaire, c’est-à-dire que chaque attribut de l’entité ne doit dépendre que de la clé et non d’autres attributs non clés.
Une règle empirique pour identifier les violations 3NF consiste à rechercher des groupes d’attributs dont les valeurs peuvent s’appliquer à plusieurs occurrences d’entité. Lorsque vous découvrez de tels attributs, déplacez-les vers une entité distincte.
Il est temps de revoir à nouveau nos informations sur les ÉTUDIANTS, cette fois à la recherche de violations 3NF. Examinez attentivement les données ÉTUDIANT. Notez que les étudiants peuvent avoir la même majeure et, à ce titre, certaines informations majeures peuvent être répétées, en particulier deux étudiants de notre petit échantillon sont des majors de littérature anglaise. Pour corriger le problème, nous devons supprimer les principaux attributs qui dépendent transitivement de la clé et créer une nouvelle entité pour eux.
Entité ETUDIANT en 3NF
ID Etudiant | Nom | Prénom | ID Matière |
---|---|---|---|
0001 | Martin | Pierre | MAT |
0002 | Antoine | Paul | PHL |
0003 | Robert | Pires | ANG |
0004 | Lee | Xavier | MUS |
0005 | Gassama | Isaac | INF |
0006 | Luigi | Mario | ANG |
Entité MATIERE en 3NF
ID Matière | Nom Matière |
---|---|
MAT | Mathématiques |
PHL | Philosophie |
ANG | Littérature anglaise |
MUS | Musique |
INF | Informatique |
Un modèle de données normalisé :
Pour être complet, un diagramme doit être développé pour le modèle de données 3NF que nous venons de créer pour les données STUDENT. La figure montre un tel modèle de données. Notez que nous n’avons pas rempli le caractère facultatif des relations. Nous pourrions le faire sur la base des exemples de données que nous avons utilisés, mais nous devons vraiment poser plus de questions avant de pouvoir répondre à des questions telles que Est-ce que chaque étudiant doit avoir une majeure ? Les données actuelles montrent que c’est le cas, mais en réalité ; vous savez que la plupart des étudiants de première année, et même des étudiants de la classe supérieure, peuvent fréquenter l’université sans avoir une majeure officiellement déclarée.
Modèle de données étudiant
Autres formes normales :
La normalisation ne s’arrête pas avec 3NF. Des formes normales supplémentaires ont été identifiées et documentées. Cependant, la normalisation au-delà de 3NF ne se produit pas souvent dans la pratique normale. Voici des formes normales supplémentaires. Juste pour votre information, nous avons gardé ceci.
La forme normale de Boyce Codd (BCNF) est un raffinement supplémentaire de 3NF. En effet, dans ses écrits ultérieurs, Codd fait référence à BCNF en tant que 3NF. Une ligne est sous forme normale de Boyce Codd si et seulement si chaque déterminant est une clé candidate. La plupart des entités en 3NF sont déjà en BCNF.
La quatrième forme normale (4NF) stipule qu’aucune entité ne peut avoir plus d’une seule relation un-à-plusieurs si les attributs un-à-plusieurs sont indépendants les uns des autres. Une entité est en 4NF si et seulement si elle est en 3NF et n’a pas d’ensembles multiples de dépendances à valeurs multiples.
La cinquième forme normale (5NF) spécifie que chaque dépendance de jointure pour l’entité doit être une conséquence de ses clés candidates.