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

Image non disponible

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 suite 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...), sans oublier le vaillant, vigilant et prometteur Oishiiii.

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)

Lire l'article.

Article lu   fois.

L'auteur

Profil Pro Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2008 - 2015 François de Sainte Marie. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.