IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Bases de données relationnelles et normalisation :
de la première à la sixième forme normale

Date de publication : 07/09/2008. Date de mise à jour : 14/07/2012.

Par François de Sainte Marie
 

La normalisation des tables (plus formellement relations) composant une base de données relationnelle est incontournable si l'on veut garantir à celle-ci :

— une structure la plus fiable et robuste qui soit, d'évolution facilitée quand les règles du jeu de l'entreprise changent ;

— Un contenu valide, par l'élimination de la redondance de l'information au sein de chaque table, redondance pouvant être la cause d'incohérences consécutives aux opérations de mise à jour de la base de données, ce que l'on oublie trop souvent.

Certes, la normalisation n'est pas la panacée, on pourra toujours injecter des redondances échappant à son contrôle, mais elle joue en tout cas un rôle décisif ne serait-ce qu'en matière d'architecture ; nous avons pu en juger pendant de très nombreuses années, sur le terrain et pour de très gros projets, que les bases de données soient relationnelles ou non.

La normalisation est un sujet dont l'étude n'est pas toujours simple, car elle a fait l'objet d'une théorie élaborée par des mathématiciens, pourvoyeurs en l'occurrence de bien des théorèmes, dont certains incontournables pour s'assurer de la structure correcte des bases de données. L'objet de cet article est de chercher à rendre le sujet abordable, l'expliquer sans employer pour autant le langage parfois hermétique de nos chers théoriciens, aussi suivrons-nous les guides les plus sûrs, à savoir C. J. Date & H. Darwen. Les informaticiens emboîtèrent le pas des théoriciens et le sujet — fort en vogue dans les années soixante-quinze / quatre-vingts — fit alors l'objet d'une vulgarisation pour le moins sujette à caution, et cela continue aujourd'hui. Aussi, nous ne pouvons ni ne voulons nous contenter des définitions incomplètes, fantaisistes ou fausses — touchant notamment aux formes normales — qui abondent dans de nombreux ouvrages et sur la Toile : rigueur et pertinence sont de mise, il y va de la validité et de la crédibilité des bases de données.

Suite aux discussions que nous avons eues sur les forums Developpez.com, nous avons tiré nombre d'enseignements quant aux questions que se posent certains qui découvrent la normalisation, ou d'autres qui ne l'ont pas abordée par le bon côté (et pensent parfois qu'elle relève de la norme ISO...) Nous tentons ici de répondre au mieux à leurs attentes tout en formalisant un peu plus et en les creusant, certains points en général juste effleurés (données temporelles par exemple, en relation avec la sixième forme normale).

Bonne et fructueuse lecture.

N.B. Dans cet article nous étudions la normalisation dite par projection/jointure, donnant lieu aux formes normales connues sous le nom de première, deuxième, ..., sixième forme normale (sans oublier l'incontournable et particulièrement importante forme normale de Boyce-Codd). En revanche nous ne traitons pas d'autres formes normales, relevant par exemple de la normalisation par restriction/union, ou de la normalisation par contraintes clés/domaines.

Et merci aux relecteurs chez DVP : TheLeadingEdge (qui m'a suggéré d'écrire cet article), mikedavem, qi130, CinePhil, SQLpro, Luc Orient, ypicot, et tout particulièrement Antoun qui n'a pas ménagé sa peine (la mienne non plus d'ailleurs...), et merci à Oishiiii, ardent défenseur du modèle relationnel de données, ainsi qu'à f-leb, toujours disponible dans les moments difficiles.

Questions et commentaires à propos de cet article sont les bienvenus. Rendez-vous autour de la discussion ad-hoc : 56 commentaires Donner une note à l´article (5)

      Version PDF

 

Avertissement
Quelques remarques préliminaires
A propos de Tutorial D
A qui s'adresse cet article ?
Concernant le vocabulaire
Préambule
1. De la normalisation
1.1. Contexte
1.2. Retour aux sources
1.3. Rappel de quelques définitions
1.4. Objet de la normalisation
1.5. Étapes de la normalisation
1.6. Normaliser, une obligation ?
1.7. Dénormalisation vs amélioration (optimisation)
Première partie - Première forme normale
2. Première forme normale
2.1. La situation en 1969
2.2. 1970 : Acte de naissance de la première forme normale
2.3. Années 1970-1980. Les théoriciens du Modèle Relationnel sont-ils en phase avec Codd ?
2.4. L'esprit et la lettre
2.5. L'atomicité : un critère absolu ?
2.6. Début des années quatre-vingt-dix. Les RVA (attributs dont les valeurs sont des relations)
2.7. Pour conclure avec la première forme normale
2.8. Le bêtisier. Les définitions non conformes de la 1NF
Deuxième partie - Forme normale de Boyce-Codd, deuxième et troisième formes normales
3. Forme normale de Boyce-Codd, deuxième et troisième formes normales
3.1. Les états d'âme provoqués par la première forme normale
3.1.1. Une tentative de normalisation en 1NF
3.1.2. Conséquences de la normalisation : des redondances à profusion
3.1.3. Les difficultés de mise à jour (Insert, Delete, Update)
3.1.4. Quelle alternative ?
3.1.5. Approche conceptuelle de la solution
3.2. L'approche analytique, ses outils
3.2.1. Remarque préliminaire
3.2.2. Dépendance fonctionnelle (DF)
3.2.3. Clé candidate
3.2.4. Surclé
3.2.5. Sous-clé
3.2.6. Clé primaire
3.3. Forme normale de Boyce-Codd (BCNF)
3.3.1. Énoncé de la BCNF
3.3.2. Théorème de Heath
3.3.3. Comment normaliser une relvar qui n'est pas en BCNF
3.3.4. Décomposition par projection - jointure préservant l'information
3.3.5. Normalisation et intégrité référentielle
3.3.6. Conséquences de la normalisation par projection - jointure
3.4. Deuxième et troisième formes normales
3.4.1. BCNF versus 2NF et 3NF
3.4.2. Deuxième forme normale (2NF)
3.5. Dépendance transitive, dépendance directe
3.6. Troisième forme normale (3NF)
3.7. Un problème embarrassant de BCNF
3.8. Retour sur la dénormalisation a priori
3.9. Une relvar respectant la BCNF peut-elle violer la 3NF ?
Troisième partie - Quatrième forme normale
4. Quatrième forme normale
4.1. Au-delà de la BCNF
4.2. Observations à propos de la jointure naturelle
4.3. Dépendance multivaluée (DMV)
4.4. Décomposition sans perte de données. Premier théorème de Fagin
4.5. Dépendance fonctionnelle et dépendance multivaluée (règle de réplication)
4.6. Dépendance multivaluée triviale
4.7. Quatrième forme normale (4NF)
4.8. Un (sympathique) théorème de Date et Fagin concernant la 4NF
4.9. 4NF et relvars « toutes clés », une légende à détruire
4.10. La 4NF et Merise
4.11. Merise et la chasse aux ternaires
4.12. Observations concernant la décomposition des relvars
4.13. Approche ascendante vs approche descendante
4.14. Implication de la BCNF par la 4NF
Quatrième partie - Cinquième forme normale
5. Cinquième forme normale
5.1. Introduction
5.2. Dépendance de jointure
5.3. Relvars formant un cycle
5.4. Dépendance de jointure triviale
5.5. Définition de la 5NF (PJ/NF)
5.6. Exemples de relvars respectant ou non la 5NF
5.7. Parallèle entre la BCNF, la 4NF et la 5NF
5.8. Un autre théorème de Date et Fagin
5.9. Pour conclure avec la normalisation en 5NF
5.10. Un petit exercice
Cinquième partie - Sixième forme normale
6. Sixième forme normale
6.1. Introduction
6.2. Définition de la sixième forme normale (6NF)
6.3. Relvars à caractère temporel, purement historiques
6.3.1. Un exemple
6.3.2. Typage des intervalles, opérateurs
6.3.3. Opérateurs PACK et UNPACK
6.3.4. Opérateurs U_PROJECT et U_JOIN
6.3.5. Opérateurs de comparaison relationnelle généralisés
6.3.6. Dépendance de jointure généralisée
6.3.7. Retour sur la 6NF, place à la concision
6.3.7.1. Remarque préalable
6.3.7.2. 2e impératif LDD
6.3.8. Déclaration des relvars
6.4. Données actives et données historisées
6.4.1. Premières tentatives de modélisation
6.4.2. Des impératifs LDD à respecter
6.4.2.1. 5e impératif LDD
6.4.2.2. 6e impératif LDD
6.4.2.3. 1er impératif LDD
6.4.2.4. 3e impératif LDD
6.4.2.5. 4e impératif LDD
6.4.2.6. Poursuite du processus d'historisation
6.5. Points particuliers
6.5.1. A propos de l'intégrité référentielle et des contraintes d'intégrité en général
6.5.2. Choix du mode d'historisation
6.5.3. Relvars « associatives »
6.5.4. Trois relvars ou une relvar unique ?
6.6. Pour conclure avec la normalisation en 6NF
Annexes
Notes. Compléments
A. Tuples, relations, relvars (définitions)
A.1. Tuple (n-uplet), attribut
A.2. Relation, relvar
A.3. Note à propos de Tutorial D
B. Notation des opérateurs relationnels (Tutorial D)
B.1. Restriction
B.2. Projection
B.3. Rename
B.4. Jointure (naturelle)
B.5. Union, Intersection, Différence
B.6. EXTEND
C. Notes concernant la 1NF et la logique du 2e ordre
C.1. Univers du discours
C.2. Termes généraux
C.3. Concept de classe
C.4. Vers la logique du deuxième ordre : termes généraux considérés comme des objets
C.5. L'exemple de la généalogie et ses applications
C.6. Au sujet des RVA de Date et Darwen
D. La normalisation et le bonhomme NULL
E. Fermeture des dépendances fonctionnelles, axiomes d'Armstrong, ensemble irréductible
E.1. Fermeture d'un ensemble de dépendances fonctionnelles
E.2. Axiomes d'Armstrong
E.3. Application des axiomes, calcul de la fermeture des DF
E.4. Fermeture d'un ensemble d'attributs, l'algorithme du seau à dépendants
E.5. Inventaire des clés et surclés. Quelques observations.
E.5.1. La technique du rouleau compresseur
E.5.2. Cas des attributs ne figurant pas dans les dépendants des DF
E.5.3. Surclés n'ayant pas d'attributs en commun et utilisation de l'algorithme du seau
E.5.4. Clés oubliées
E.6. Ensemble irréductible de dépendances fonctionnelles
E.6.1. Ensembles de DF et redondances
E.6.2. Propriétés d'un ensemble irréductible de DF
E.6.3. Pluralité des ensembles irréductibles pour une relvar
E.7. Décompositions sans perte
E.7.1. Préservation du contenu de la base de données
E.7.2. Préservation des dépendances fonctionnelles
E.8. Conclusion
F. Identification relative versus identification absolue
F.1. Consommation des ressources physiques
F.2. Performance des applications
F.3. Le clustering selon DB2 for z/OS
F.4. L'identification relative au service de l'intégrité des données
Références
Bibliographie



      Version PDF

 

Valid XHTML 1.0 TransitionalValid CSS!

Copyright © 2008 - François de Sainte Marie. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.