Bases de Données / Databases

Site Web de l'équipe BD du LIP6 / LIP6 DB Web Site

Outils pour utilisateurs

Outils du site


site:enseignement:master:bdle:tmes:sqlrecursif

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
site:enseignement:master:bdle:tmes:sqlrecursif [16/12/2016 08:19]
amann
site:enseignement:master:bdle:tmes:sqlrecursif [19/10/2017 11:06] (Version actuelle)
hubert
Ligne 1: Ligne 1:
 +{{indexmenu_n>​70}}
 +
 ====== SQL et récursion ====== ====== SQL et récursion ======
  
Ligne 4: Ligne 6:
 ===== Connexion Oracle ===== ===== Connexion Oracle =====
  
-[[http://​www-bd.lip6.fr/​ens/​bdmd2013/​index.php/​ConnexionOracle]]+<del>[[http://​www-bd.lip6.fr/​ens/​bdmd2013/​index.php/​ConnexionOracle]]</​del>​ 
 + 
 +[[site:​enseignement:​documentation:​oracle:​connexionoracle]]
  
 +Quelques liens intéressants:​
 +  * [[https://​docs.oracle.com/​cd/​B19306_01/​server.102/​b14200/​queries003.htm|Requetes hiérarchiques]]
 ===== Chargement de Données ===== ===== Chargement de Données =====
  
Ligne 31: Ligne 37:
  
 ---- ----
-**Question 2**: Affichez tous les noeuds atteignables à partir du noeud 1 et la longueur des chemins. Ensuite, affichez également les chemins (SYS_CONNECT_BY_PATH).+**Question 2**: Exécutez ​la requête suivante et expliquez ce qu'​elle affiche.
  
 +<code sql>
 +SELECT DISTINCT target, level, SYS_CONNECT_BY_PATH(SOURCE,​ '/'​) path
 +FROM myedges
 +START WITH SOURCE=1
 +CONNECT BY prior target=SOURCE;​
 +</​code>​
  
  
 ---- ----
-**Question 3**: Affichez tous les pairs de noeuds dans G et la longueur des chemins entre eux (il faut utiliser CONNECT_BY_ROOT). Triez le résultats sour les attributs source et target. Ensuite, affichez également les chemins.+**Question 3**: Affichez tous les pairs de noeuds dans G et la longueur des chemins entre eux (il faut utiliser ​[[https://​docs.oracle.com/​cd/​B14117_01/​server.101/​b10759/​operators004.htm|CONNECT_BY_ROOT]]). Triez le résultats sour les attributs source et target. Ensuite, affichez également les chemins.
  
  
  
 ---- ----
-**Question 4**: Insérez les deux arcs suivants et évaluez à nouveaux les requêtes précédentes (il faudra ajouter le mot clé NOCYCLE après CONNECT BY):+**Question 4**: Insérez les deux arcs suivants et évaluez à nouveaux les requêtes précédentes (il faudra ajouter le mot clé [[https://​docs.oracle.com/​cd/​B19306_01/​server.102/​b14200/​queries003.htm|NOCYCLE]] après CONNECT BY):
  
 <code SQL> <code SQL>
Ligne 49: Ligne 61:
  
 ---- ----
-**Question 5**: Affichez tous les pairs de noeuds dans G et la longueur des chemins entre eux ainsi l'​information si le chemin est un cycle.+**Question 5**: Affichez tous les pairs de noeuds dans G et la longueur des chemins entre eux ainsi l'​information si le chemin est un cycle (.
  
  
Ligne 62: Ligne 74:
 ***Question 8**: Exécutez la requête suivante et analysez le résultat. Changez la stratégie de parcours (DEPTH FIRST, BREADTH FIRST) et l'​attribut utilisé pour la détection du cycle. ***Question 8**: Exécutez la requête suivante et analysez le résultat. Changez la stratégie de parcours (DEPTH FIRST, BREADTH FIRST) et l'​attribut utilisé pour la détection du cycle.
 <code SQL> <code SQL>
-with R2(a,b,l)+with R2(source,target,l)
 as ( as (
    ​select source,​target,​1 from myedges    ​select source,​target,​1 from myedges
    union all    union all
-   ​select r.a, m.target, r.l+1  from R2 r, myedges m where m.source=r.b+   ​select r.source, m.target, r.l+1  from R2 r, myedges m where m.source=r.target
 ) )
-search breadth first by set o1 +search breadth first by source ​set o1 
-cycle set end to 1 default 0+cycle target ​set end to 1 default 0
 select * from R2 select * from R2
 order by o1; order by o1;
 </​code>​ </​code>​
  
-----  +
-***Question 8bis**: Caculez l'​histogramme du graphe Facebook/+
  
 ---- ----
-***Question 9**: Ecrivez une requête qui retourne tous les pairs de noeuds et la longueur du plus court chemin.+**Question 9**: Ecrivez une requête qui retourne tous les pairs de noeuds et la longueur du plus court chemin.
  
    
Ligne 148: Ligne 159:
 Exécutez la requête précédente (ou d'​autres requêtes) et étudiez les statistiques observées: Exécutez la requête précédente (ou d'​autres requêtes) et étudiez les statistiques observées:
  
-Explications :​{{https://​docs.oracle.com/​cd/​B10500_01/​server.920/​a96533/​autotrac.htm#15942}}+Explications :​{{https://​docs.oracle.com/​cd/​B10500_01/​server.920/​a96533/​autotrac.htm}}
  
 Avant de conteinuer, il faut faire: Avant de conteinuer, il faut faire:
Ligne 191: Ligne 202:
  
 Résultat: 34 Résultat: 34
 +
 +---- 
 +***Question 8bis**: Calculez l'​histogramme du graphe Facebook.
  
 ---- ----
site/enseignement/master/bdle/tmes/sqlrecursif.1481872740.txt.gz · Dernière modification: 16/12/2016 08:19 par amann