IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DB2 Discussion :

Tutoriel DB2 et le SQL récursif


Sujet :

DB2

  1. #1
    Expert éminent sénior

    Avatar de Deepin
    Homme Profil pro
    Ingénieur - Chef de projet Modélisation/Simulation
    Inscrit en
    Avril 2004
    Messages
    3 164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afrique Du Sud

    Informations professionnelles :
    Activité : Ingénieur - Chef de projet Modélisation/Simulation
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 164
    Points : 51 026
    Points
    51 026
    Par défaut Tutoriel DB2 et le SQL récursif
    Cet article a pour vocation d'expliquer le fonctionnement du SQL récursif. Ce tutoriel est basé sur DB2 mais il est globalement applicable à d'autres gestionnaires de bases de données comme par exemple SQL Server. Cette technologie est à la fois simple et très puissante et permet d'éviter des procédures stockées complexes ou d'implémenter la récursivité au niveau du client qui entraine un important trafic de données sur le réseau.
    Tutoriel : DB2 et le SQL récursif

    N'hésitez pas à commenter ou à nous faire part de vos remarques sur ce tutoriel.

    Bonne lecture.

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    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.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

Discussions similaires

  1. Connection DB2 par SQuirrel SQL Client
    Par ebece dans le forum DB2
    Réponses: 1
    Dernier message: 08/11/2011, 00h19
  2. suppression des doublons dans un SQL récursif
    Par dr_nilkog dans le forum DB2
    Réponses: 10
    Dernier message: 10/10/2011, 09h24
  3. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  4. DB2 --> équivalent MS SQL Profiler
    Par jpillonel dans le forum DB2
    Réponses: 1
    Dernier message: 15/06/2006, 06h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo