Enseigné dans le M2 PISE de l'Université Paris 7 par Christophe DARMANGEAT.

Toutes les erreurs, insuffisances et plaisanteries affligeantes contenues dans ce site
relèvent de la seule responsabilité de la bassesse de leur auteur (NB : attention, jeu de mots).

Si ce cours vous a instruit, ou amusé, ou mieux, les deux à la fois, n'hésitez surtout pas à me remercier en m'invitant au restaurant ou sur une barrière de corail. Ou mieux, les deux à la fois.

2 – Premiers problèmes… et premières solutions

Organiser des données, où est le problème, direz-vous ? Y a-t-il vraiment besoin de faire des études pour cela ? Il suffit d'être un peu soigneux, et il n'y a aucune raison que ça se passe mal.

Eh bien si, en fait. Les données, quand elles se présentent en (très) grandes quantités, posent des problèmes auxquels on ne s'attend pas. C'est bien pour cela qu'on a mis au point un certain nombre de règles et de méthodes qui, si elles ne peuvent dispenser personne de réfléchir, aident néanmoins à réfléchir én évitant les catastrophes les plus courantes.

Voyons les problèmes les plus évidents qui se posent lorsqu'on veut organiser des informations. Pour cela, imaginons que nous voulions informatiser les rayons de ma discothèque… – enfin, disons les dix premiers CD du rayonnage, parce que sinon, ça va être un peu longuet.

Faisons simple pour commencer : nous ne noterons, pour chaque CD, que le titre, l'année, le nom de l'artiste et le genre musical. Cela nous donne la liste suivante :

  • Nursery Cryme, Genesis, 1972, rock progressif
  • Foxtrot, Genesis, 1972, rock progressif
  • Selling England by the Pound, Genesis, 1973, rock progressif
  • Symphonie n°2, Sibelius, 1985, classique
  • Symphonie n°7, Sibelius, 1987, classique
  • Concerto pour violon, Mendelssohn, 1992, classique
  • Crime passionnel, Guidoni, 1982, chanson française
  • 5th Gear, Brad Paisley, 2007, country
  • Thick as a Brick, Jethro Tull, 1973, rock progressif
  • Purpendicular, Deep Purple, 1996, rock

Il va de soi que pour représenter de telles informations, une liste c'est bien, mais qu'un tableau, ce serait beaucoup mieux. Les conventions étant en accord avec ce que nous suggère l'intuition, on mettra en ligne, les uns en-dessous des autres, les différents disques (autrement dit, en quelque sorte, les « individus » de notre base). Et on portera en colonne les différents renseignements dont on dispose pour chacun de ces individus. Naturellement, il est préférable –- et, en réalité, obligatoire - de nommer ces colonnes : Ma discothèque prendrait ainsi la forme du tableau suivant :

TITRE ARTISTE ANNEE GENRE
Nursery Cryme Genesis 1972 rock progressif
Foxtrot Genesis 1972 rock progresif
Selling England by the Pound Genesis 1973 rock progressif
Symphonie n°2 Jean Sibelius 1985 classique
Symphonie n°7 Jean Sibelius 1987 classique
Concerto pour violon Felix Mendelssohn 1992 Classique
Crime passionnel Jean Guidoni 1982 chanson française
5th Gear Brad Paisley 2007 country
Thick as a Brick Jethro Tull 1973 rock progressif

Or, ce petit tableau, à lui seul, fait apparaître au moins deux problèmes majeurs.

  • le premier, c'est que des informations identiques s'y répètent : en l'occurrence, celles concernant les artistes, et encore plus, le genre. En termes savants, on parle de redondance des informations. Imaginons que ma discothèque comporte plusieurs centaines de CD, il y a fort à parier que la mention « classique » ou « rock progressif » va se retrouver répliquée des dizaines de fois. Or, tout cela, il va bien falloir le stocker quelque part sous forme de bits et d'octets, et des informations inutilement répétées, ce sont des octets inutilement occupés… On n'en meurt pas, direz-vous. Certes, encore que.
  • le second problème, lié au premier, est pour sa part rédhibitoire. C'est que vu la manière dont j'ai bâti mes informations, je ne suis pas à l'abri d'une erreur, ou même d'un simple manque d'homogénéité, dans la saisie. Par exemple, lorsque j'ai tapé le genre du CD Foxtrot, j'ai oublié les deux « s » de « progressif », ce qui est une faute de frappe assez clasique. De même, le genre « classique » est orthographié tantôt avec une majuscule, tantôt sans majuscule. Tout cela est fort préjudiciable pour la suite des événements. Si je fais une recherche, par exemple, sur le genre « rock progressif » ou « classique », il manquera des CDs qui auraient dû y figurer. Cette organisation laisse donc la possibilité qu'existe une hétérogénéité des données, un des pires cauchemars de l'informaticien (qui pourtant n'en manque pas) .

Ces deux problèmes possèdent une solution commune, très simple mais extrêmement efficace, qui consiste à recenser séparément les CD et les genres :

TITRE ARTISTE ANNEE
Nursery Cryme Genesis 1972
Foxtrot Genesis 1972
Selling England by the Pound Genesis 1973
Symphonie n°2 Jean Sibelius 1985
Symphonie n°7 Jean Sibelius 1987
Concerto pour violon Felix Mendelssohn 1992
Crime passionnel Jean Guidoni 1982
5th Gear Brad Paisley 2007
Thick as a Brick Jethro Tull 1973
GENRE
chanson française
classique
country
rock progressif

Il ne reste plus à présent qu'à préciser à quel genre appartient chaque CD. Pour ce faire, on identifie chaque genre par un code unique, et on reporte ce code dans le tableau des CDs.

CODEGENRE
1chanson française
2classique
3country
4rock progressif

avec :

TITRE ARTISTE ANNEECODE
Nursery Cryme Genesis 19724
Foxtrot Genesis 19724
Selling England by the Pound Genesis 19734
Symphonie n°2 Jean Sibelius 19852
Symphonie n°7 Jean Sibelius 19872
Concerto pour violon Felix Mendelssohn 19922
Crime passionnel Jean Guidoni 19821
5th Gear Brad Paisley 20073
Thick as a Brick Jethro Tull 19734

Comme Bertin, nous venons de faire d'une pierre deux coups :

  • on a économisé de la place en mémoire, car stocker un code mobilise beaucoup moins d'octets que stocker un intitulé
  • surtout, on a pris une garantie contre les informations hétérogènes : le code correspond toujours au même intitulé, et on ne peut plus guère imaginer se retrouver avec un même genre musical orthographié différemment.

Ce que nous venons de faire, c'est – en tout petit, petit, le fond de la question en matière de modélisation de l'information : nous venons de créer une relation entre deux tables (deux entités) ; voilà pourquoi on parle de Systèmes de Bases de Données Relationnelles. Tout ce que nous allons voir ensuite, n'est pour ainsi dire que des complications et des raffinements à partir de cette base simple.

Cela dit, jusqu'à maintenant, nous avons procédé pour ainsi dire uniquement par intuition – or, vous vous en doutez bien, il existe un certain nombre de formes pré-établies, de standards (tant de méthode que de représentation) pour venir à bout des problèmes les plus complexes. Ce sont ces formes et ces standards que nous allons aborder à présent.

Remarque capitale : Il suffit d'observer la situation à laquelle nous sommes parvenus pour constater que nous n'avons parcouru que la moitié du chemin. Nous avons certes éliminé une source de redondances en créant la table Genres. Mais nous en avons laissé une deuxième : celle liée aux artistes. Il est donc essentiel de comprendre que ce qui est présenté ici n'est que le premier pas, et que notre modélisation est irrecevable en l'état.