Bonsoir,
J’essaie d’apporter des commentaires sur l’article, mais ça ne fonctionne pas. Je les fais donc figurer ci-dessous, à l’intention et à l’attention de l’auteur :
Vous présentez le schéma :
Ce schéma approximatif (par exemple, où sont les clés ?) ne correspond pas au sujet traité. En effet, les flèches montrent un cycle, mais certainement pas des associations réflexives telles qu’on les utilise pour représenter des nomenclatures et des hiérarchies.
La charte SQL valable pour les forumeurs vaut aussi pour les rédacteurs qui doivent donner l’exemple : merci de fournir le DDL de création des tables, (CREATE TABLE), sans oublier les clés primaires et étrangères : ça n’est pas aux lecteurs de le faire. Fournissez un jeu d’essai comportant les INSERT dans les tables. Là encore, il n’est pas normal que le lecteur soit obligé de construire lui-même ces INSERT à partir de phrases du genre :
« Dans notre exemple, le produit fini 'A' concerné est composé de 2 produits 'B', 1 'C' et 1 'D'. Le produit 'C' est lui même composé de 2 'D' et 3 'E'. 'B' quant a lui est composé de 1 'E', 2 'F' et 2 'C'. »
Par rapport à cet exemple, le résultat que vous présentez : <4, 6, D> n’est du reste pas le bon.
Un article limité à une ou deux requêtes SQL n'est qu'une ébauche. Étoffez avec des variantes, par exemple le calcul les quantités pour l’ensemble des produits finis, traitez de la fermeture transitive. Inspirez-vous des travaux de Frédéric Brouard (SQLpro) ou des nombreux exemples de jointures récursives fournis dans les forums de Developpez.com.
Orthographe : il faudrait que vous fassiez relire votre article. Quelques erreurs :
« tout les composants », « nombre total d'élément », « une succession de lecture », « aurait du assurer ».
A noter que lorsqu’un mot est suivi par « : », en français on fait figurer un espace de séparation : on n’écrit pas « parties: » mais « parties : ».
Problème des boucles infinies. Vous écrivez :
« Pour éviter ce piège, vous devez limiter la profondeur de la récursivité en utilisant un compteur. »
Remplacez « devez » par « pourriez », il y a en effet d’autres méthodes !
Vous écrivez :
« Le SQL récursif est un outil puissant et pratique qui permet d'économiser un trafic important entre le serveur et le client qui autrement aurait du assurer la récursivité ».
Cela fait plus de 10 ans que je ne pratique plus DB2, mais à l’instar d’autres SGBD (MS SQL Server par exemple), j’espère qu’on peut passer par des appels récursifs de procédures natives pour éviter le trafic entre le serveur et le client.
Conclusion :
Cet article est une ébauche qui n’est pas inintéressante mais qui aurait dû être soumise à relecture (si ce fur le cas, ce fut trop rapide). C'est un peu court, à compléter et à corriger.
Partager