steph68b,
Quand vous utilisez cette notation non formelle, mais courante :
commande (nocde, montant, nocli, ...)
En soulignant les noms des attributs, vous sous-entendez qu’ils composent la clé de la table : on va supposer ici que nocli n’en fait pas partie...
Comme l’a laissé sous-entendre Pierre, la jointure est l’opération par excellence pour manipuler les bases de données relationnelles. C’est Ted Codd qui l’a inventée en 1969 (E. F. Codd, Derivability, Redundancy and Consistency of Relations Stored in Large Data Banks) et elle permet de se contenter d’ une instruction quand auparavant il fallait monter un appareillage de fichiers (au bas mot 50 instructions) pour traiter l’exercice.
Ainsi, pour « appareiller » (pardon pour ce terme antédiluvien) les clients et leur commandes, on utilise la jointure naturelle (jointure pour abréger) :
En relationnel pur :
(1) CLIENT JOIN COMMANDE
EN SQL (norme SQL:1992) :
(2) CLIENT NATURAL JOIN COMMANDE
Ou :
(3) CLIENT JOIN COMMANDE ON CLIENT.Nocli = COMMANDE.Nocli
Ou :
(4) CLIENT JOIN COMMANDE USING (Nocli)
Ou (norme SQL:1989) :
(5) CLIENT, COMMANDE WHERE CLIENT.Nocli = COMMANDE.Nocli
Chez DVP, c’est la version (3) qui est la plus utilisée. Ainsi, pour obtenir les clients et leurs commandes :
1 2 3
|
SELECT CLIENT.Nocli, CLIENT.Nomcli, CLIENT.Adressecli, COMMANDE.Montant, COMMANDE.Datecde
FROM CLIENT JOIN COMMANDE ON CLIENT.Nocli = COMMANDE.Nocli ; |
De la même façon, pour obtenir les lignes de commande d’une commande :
COMMANDE JOIN LIGNE_COMMANDE ON COMMANDE.Nocde = LIGNE_COMMANDE.Nocde
Pour compléter la requête SQL (la jointure naturelle est associative) :
1 2 3 4 5
|
SELECT CLIENT.Nocli, CLIENT.Nomcli, CLIENT.Adressecli, COMMANDE.Montant, COMMANDE.Datecde,
LIGNE_COMMANDE.article, LIGNE_COMMANDE.prix, LIGNE_COMMANDE.qte
FROM CLIENT JOIN COMMANDE ON CLIENT.Nocli = COMMANDE.Nocli
JOIN LIGNE_COMMANDE ON COMMANDE.Nocde = LIGNE_COMMANDE.Nocde ; |
Inutile de faire participer l’attribut flag_cde (redondant, donc inutile), car la jointure naturelle suffit pour ne pas retenir les client sans factures.
Partager