Forme normale
Les formes normales (FN) sont des règles ou des lignes directrices utilisées dans la conception de bases de données relationnelles afin de minimiser les redondances et les anomalies lors de la manipulation des données. Chaque forme normale correspond à un niveau de normalisation plus strict qui réduit les anomalies potentielles dans les bases de données. La forme normale permet d'indiquer si la redondance est éliminé ou partiellement éliminer d'une base de données et que la base de données ne présentera pas de problème de mise-à-jour. Voici un tableau des formes normale :
Forme normale | Description |
---|---|
1FN | La première forme normale permet d'indiquer que tous les enregistrements ont le même nombre d'attribut |
2FN | La deuxième forme normale permet d'indiquer qu'elle est 1FN et qu'aucun attribut non-clef ne dépend d'une partie de la clef. |
3FN | La troisième forme normale permet d'indiquer qu'elle est 2FN et qu'aucune dépendance fonctionnelle existe entre les attribut non-clef. |
4FN | La quatrième forme normale permet d'indiquer qu'elle est Boyce-Codd (les dépendances sont susceptible d'être des clefs) et qu'il n'existe pas deux ou plusieurs dépendance multivaluée dans une même table. |
5FN | La cinquième forme normale permet d'indiquer qu'elle est 4FN et qu'il existe plusieurs dépendances multivaluée en relation entre elles. |
6NF | La sixième forme normale permet d'indiquer qu'une table est en 6NF si elle est en 5NF et elle est décomposée jusqu'à n'avoir que des dépendances triviales, souvent utilisée dans des bases de données temporelles où il est important de suivre les variations des données au fil du temps. |
Première forme normale (1NF)
La première forme normale (1NF) est le premier palier dans la normalisation des bases de données relationnelles. Elle vise à garantir que les données sont organisées en tables de manière structurée et simple. Une table est considérée en 1NF si chaque colonne contient des valeurs atomiques, c'est-à-dire indivisibles, ce qui signifie qu'il n'y a pas de collections ou de groupes de valeurs au sein d'une même cellule. Les valeurs dans chaque ligne et colonne doivent être uniques, évitant ainsi toute forme de répétition de données dans les colonnes.
Cette forme normalisée interdit la présence de tables imbriquées ou de colonnes contenant plusieurs valeurs comme des listes ou des tableaux. Cela facilite l'interrogation des données en garantissant qu'elles sont uniformes et accessibles sans traitements complexes pour les diviser en éléments distincts. Ainsi, l'application de la 1NF permet de réduire les incohérences dans la gestion des données et assure une meilleure lisibilité pour les utilisateurs et les systèmes qui interagissent avec la base.
La 1NF est essentielle pour garantir l'intégrité des données dans une base relationnelle, mais elle est souvent considérée comme un premier pas insuffisant pour éviter les anomalies de mise à jour ou de suppression. En effet, des redondances peuvent toujours exister même si les données sont atomiques. C'est pourquoi il est nécessaire de continuer le processus de normalisation avec la deuxième et la troisième forme normale pour optimiser encore plus la structure de la base de données.
Deuxième forme normale (2NF)
La deuxième forme normale (2NF) s'appuie sur la première en ajoutant une contrainte supplémentaire : elle exige qu'il n'y ait pas de dépendances partielles entre les colonnes d'une table. Autrement dit, dans une table où la clef primaire est composée de plusieurs colonnes (clef composite), aucune colonne non clef ne doit dépendre d'une partie de cette clef. La 2NF impose que chaque attribut non clef dépende de l'ensemble complet de la clef primaire et non seulement d'une partie de celle-ci.
Cette règle permet d'éliminer les redondances pouvant se produire dans des tables où une colonne est fonctionnellement dépendante d'une seule partie de la clef primaire. Par exemple, dans une table représentant des étudiants inscrits à des cours, si certaines colonnes, comme le nom de l'étudiant, dépendent uniquement de l'identificateur de l'étudiant et non du cours auquel il est inscrit, il y aurait une redondance d'information. La 2NF permet de scinder ces informations en tables séparées pour éviter la duplication et les incohérences lors des mises à jour.
En décomposant les tables pour éliminer ces dépendances partielles, la 2NF contribue à éviter les anomalies de mise à jour, de suppression ou d'insertion. Cette forme est cruciale pour optimiser la structure des bases de données relationnelles, mais elle ne résout pas tous les problèmes de redondance, car des dépendances indirectes peuvent toujours subsister. C'est pourquoi on introduit la troisième forme normale pour gérer ces situations.
Troisième forme normale (3NF)
La troisième forme normale (3NF) poursuit le travail amorcé par les deux premières en cherchant à éliminer les dépendances transitives. Une dépendance transitive se produit lorsqu'une colonne non clef dépend d'une autre colonne non clef, au lieu de dépendre directement de la clef primaire. Pour qu'une table soit en 3NF, elle doit déjà être en 2NF et, en plus, toutes les colonnes non clefs doivent dépendre uniquement de la clef primaire, sans aucune dépendance intermédiaire par d'autres colonnes.
L'objectif de la 3NF est d'éviter les redondances dues aux dépendances transitives pouvant compliquer les mises à jour. Par exemple, si une table contient les colonnes CodePostal et Ville, et que la Ville dépend du CodePostal, alors cette dépendance transitive introduit une redondance : si le code postal change, il faut mettre à jour toutes les occurrences de la ville correspondante. En séparant ces données dans des tables distinctes, la 3NF permet de garantir une plus grande flexibilité et cohérence lors des opérations de mise à jour.
En appliquant la 3NF, on atteint un degré de normalisation garantissant une organisation optimale des données pour la majorité des bases de données relationnelles. Toutefois, pour certaines situations complexes impliquant des clés multiples ou des relations multivaluées, des formes normales plus avancées, comme la forme normale de Boyce-Codd (BCNF) ou la quatrième forme normale (4NF), peuvent encore être nécessaires pour éliminer les redondances résiduelles.
Forme normale de Boyce-Codd (BCNF)
La forme normale de Boyce-Codd (BCNF) est une extension stricte de la troisième forme normale. Elle est utilisée pour résoudre des cas spécifiques où des anomalies subsistent même lorsque la table est en 3NF. La BCNF impose qu'une table soit en 3NF mais avec une contrainte supplémentaire : dans chaque dépendance fonctionnelle non triviale, le déterminant (la colonne qui détermine une autre) doit être une clef candidate, c'est-à-dire une clef alternative pouvant potentiellement servir de clef primaire.
La BCNF est utile lorsque plusieurs clefs candidates sont présentes dans une table et que certaines colonnes dépendent de l'une de ces clefs, plutôt que de la clef primaire. Cela peut entraîner des redondances n'étant pas éliminées par la 3NF. Par exemple, dans une table où un enseignant est assigné à plusieurs cours et salles de classe, une relation complexe peut exister entre les cours et les salles, qui ne sont pas résolues par la 3NF. La BCNF permet de décomposer ces relations en tables séparées.
Bien que la BCNF soit rarement nécessaire dans la plupart des bases de données, elle est essentielle dans des schémas plus complexes où des relations multiples existent entre les clefs candidates et les colonnes non clefs. Elle garantit un degré de normalisation encore plus élevé, minimisant ainsi les risques d'anomalies de données.
Quatrième forme normale (4NF)
La quatrième forme normale (4NF) est conçue pour éliminer un type particulier de redondance appelé dépendance multivaluée. Une dépendance multivaluée se produit lorsqu'une colonne dans une table est dépendante de la clef primaire, mais que cette dépendance implique plusieurs ensembles de valeurs distincts, chacun indépendant de l'autre. La 4NF élimine ces situations en veillant à ce que chaque table représente un seul fait à la fois.
Prenons un exemple où une table contient des informations sur des projets et les membres assignés à ces projets. Si un projet a plusieurs membres, et que les membres ont chacun plusieurs compétences, il pourrait y avoir plusieurs lignes redondantes dans la table pour représenter chaque combinaison de membre et de compétence. La 4NF recommande de diviser cette table en deux, l'une pour les membres du projet et l'autre pour les compétences des membres, afin d'éliminer la redondance.
La 4NF est rarement nécessaire dans des bases de données simples mais devient cruciale lorsque les relations entre les entités sont complexes et multivaluées. Elle garantit une décomposition supplémentaire des tables pour éviter les doublons et les incohérences lors des opérations d'insertion ou de mise à jour.
Cinquième forme normale (5NF)
La cinquième forme normale (5NF), également connue sous le nom de forme normale de projection-join (PJNF), traite des dépendances de jointure. Une dépendance de jointure survient lorsque certaines relations dans une table peuvent être divisées en plusieurs sous-relations, puis recomposées sans perte d'information. La 5NF garantit que les tables ne peuvent être décomposées en relations plus petites sans perte de données lors des jointures.
Cette forme normale est rarement nécessaire, sauf dans des situations où des relations très complexes existent entre les colonnes d'une table. Par exemple, si une table contient des informations sur des contrats impliquant plusieurs parties, comme des clients, des fournisseurs et des produits, la 5NF assure que la table peut être scindée en plusieurs sous-tables (une pour chaque relation contractuelle) sans risque de perdre ou dupliquer les informations lors de la recombinaison des données.
Bien que la 5NF soit rarement appliquée dans les bases de données pratiques, elle est utile dans des environnements où des relations complexes et des jointures fréquentes existent. L'application de cette forme normale garantit que les relations sont représentées de manière optimale, sans risque d'introduire des incohérences à travers les jointures des tables.
Sixième forme normale (6NF)
La sixième forme normale (6NF) est principalement utilisée dans les bases de données temporelles, où il est crucial de suivre les changements de données au fil du temps. Elle décompose les tables au maximum pour garantir que chaque relation contient uniquement des informations atomiques concernant un seul fait à un moment donné. La 6NF se concentre donc sur l'historisation des données et l'intégrité des enregistrements temporels.
Dans les bases de données traditionnelles, les données peuvent être mises à jour ou supprimées sans conserver l'historique complet des modifications. Cependant, dans des systèmes où l'évolution des données au fil du temps est critique (par exemple, dans des systèmes financiers ou médicaux), la 6NF permet de suivre chaque modification de manière précise et de les structurer de façon optimale pour répondre à des requêtes historiques ou prédictives.
La 6NF est rarement utilisée en dehors de ces contextes spécialisés, mais elle est cruciale pour garantir l'intégrité des données historiques. En appliquant cette forme normale, les développeurs peuvent s'assurer que les systèmes peuvent gérer les informations de manière fiable sur le long terme, tout en évitant les problèmes d'incohérence ou de redondance dans la gestion des données temporelles.