Chapitre 5 : le mécanisme relationnel

 

 

1- Traduire les relations

 

         

       

Pour comprendre comment fonctionne une relation, il suffit de jeter un coup d'oeil à l'exemple représenté ci-dessous.

La table de gauche contient la liste des produits commercialisés par l'entreprise. La table de droite contient la liste des fournisseurs. Considérons le premier produit, le ciment C-21 ; son code fournisseur vaut 3. Dans la table de droite, l'ordinateur lira que le fournisseur est la société "Ciments X", ainsi que toutes les informations qui la concernent (l'adresse, le téléphone, le fax, les conditions consenties, etc.). Sa recherche sera d'autant plus rapide que la table "Fournisseurs" sera triée dans l'ordre croissant des codes. Bref, le SGBD maniera les relations comme le ferait un être humain.

         

 

Relation entre deux tables

 

 

2  Un cas difficile

 

         

       

Continuons l'informatisation de l'entreprise, et attaquons-nous aux bons de livraison. Pour chaque commande exécutée, il faut noter le numéro de la commande, la date, le nom -- ou plutôt le code -- de l'entreprise, puis la liste des produits -- ou plutôt de leurs codes -- avec les quantités livrées. Sur papier, pas de difficulté : on peut toujours faire tenir quelques lignes ou quelques dizaines de ligne sur une feuille de papier A4. Mais, pour reporter le tout dans une table, nous rencontrons un sérieux problème, comme le montre la figure ci-dessous. Combien devons-nous prévoir de colonnes pour le code du produit et la quantité correspondante ?

         

 

Bons de livraison

Date

Code ent.

Code_prod

Quantité

Code_prod

Quantité

Etc.....?

1225

15/02/2001

SGTDM

---------

------

---------

------

 

1226

15/02/2001

XYZT

----------

---

----------

---

 

1227

15/02/2001

CQFD

--------

------

--------

------

 

etc.

 

 

 

 

 

 

 

 

 

 

La nouvelle table (dite table de jonction) comportera trois colonnes :

 

 

 

       

   

la première colonne contiendra un code assurant le lien avec la table "Bons de livraison". Ce code, qui doit désigner de manière unique chaque bon de livraison, sera tout simplement son numéro ;

 

 

la seconde colonne contiendra les codes des produits ;

 

 

la troisième colonne contiendra les quantités livrées.

 

 

 

Nous écrirons autant de lignes dans cette nouvelle table qu'il y avait de produits mentionnés sur chaque bon de livraison, comme le montre la figure ci-dessous. Nous voyons dans cette table que le bon de livraison n° 1225 comporte 30 sacs de ciment (C-22), 2 palettes de pavés (P-5) et 5 regards de 40 cm (R-10), toutes informations tirées de la table "Produits", la relation étant assurée via le code produit. La table "Bons de livraison" nous montre (grâce à la relation assurée par le numéro de bon) que l'entreprise livrée est notre bon client SGTDM. Les informations le concernant se trouvent dans la table "Clients", la relation étant assurée par le code client.

 

 

Table de jonction

N° bon

Code_prod

Quantité

1225

C-22

30

1225

P-5

2

1225

R-10

5

1226

etc.

 

 

 

 

Que s'est-il passé dans le cas des bons de livraison ? Nous nous sommes trouvés devant une relation plus complexe que précédemment. Un même bon de livraison peut mentionner plusieurs produit, et un même produit apparaît dans de nombreux bons de livraison (sinon, c'est un produit qui ne se vend pas, et il faut l'abandonner). Nous avons affaire à une relation n-n (ou plusieurs à plusieurs), difficile à gérer par des moyens informatiques, alors qu'il n'y a pas de problème avec les moyens manuels.

 

 

 

Heureusement pour nous, la création d'une table de jonction, puisant ses codes dans deux autres tables ("Bons de livraison" d'un côté, "Produits" de l'autre), nous a tirés d'affaire..

 

 

 

 

3 - Conclusion

 

      

       

 

         

 

 

Les premiers SGBD mis sur le marché ne géraient pas les relations, et les entreprises les trouvaient fort malcommodes. Le succès des SGBD relationnels provient du fait qu'ils répondent bien aux besoins des entreprises -- parce qu'ils ont été conçus pour cela.