106
Chapitre 5 • Le langage SQL DML
L’interprétation d’une jointure multiple se fait de manière itérative : on évalue une
première jointure, dont le résultat est joint à la table suivante 31 , et ainsi de suite.
Selon cette règle, la requête suivante décrit des lignes de DETAIL.
select D.NCOM,D.NPRO,LOCALITE,LIBELLE
from
CLIENT CLI,COMMANDE COM,DETAIL D,PRODUIT P
where CLI.NCLI = COM.NCLI
and
COM.NCOM = D.NCOM
and
D.NPRO = P.NPRO
Dans les situations de jointure multiples, la règle d’interprétation évoquée ne fonctionne que si chaque table citée dans la jointure n’est référencée que par une seule
table de cette même jointure. Intuitivement, si les arcs des clés étrangères sont
dessinés avec une orientation de bas en haut, le graphe des tables intervenant dans la
jointure est un arbre dont la racine est en bas, et qui fournit des informations sur les
entités représentées par cette racine. Pour la requête précédente, ce graphe est celui
de la figure 3.5. Cette règle est aussi applicable à une jointure PRODUIT * COMPOSITION * PRODUIT (figure 5.5) qui associerait ses composants à chaque produit, et
qui représenterait des compositions.
Intuitivement toujours, la jointure est formée de fragments qui obéissent aux
règles de la figure 5.9, où un rectangle représente toute citation d’une table dans la
clause from et un arc une clé étrangère servant à définir une jointure dans la clause
where (les fragments du type 2 et 3 peuvent comprendre plus de deux clés étrangères)
En particulier, elle ne fonctionne pas dans le cas 4, où une jointure est définie
entre les tables A, B et C, telles que A est référencée par B et C. Cette jointure représente des entités nouvelles, résultant du croisement des entités de B et des entités de
C via A 32 . Bien que de telles jointures soient relativement rares, cette restriction
valait d’être notée.
Figure 5.9 - Une jointure fournit des informations sur la racine de son graphe si celuici est constitué de fragments des types 1, 2 et 3, mais pas du type 4
31. L’ordre d’évaluation de jointures multiples est indifférent.
32. Un exemple concret : la table ENTREPRISE (A) est référencée par les tables FOURNISSEUR (B) et CLIENT (C). La jointure de ces trois tables représente tous les couples tels que fournisseur et client dépendent de la même entreprise.
1
2
3
4
B
C
A
Précédent

- 106/436

Suivant