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
enseignement:tp:bd:tp-xml-sql:2015 [2015/10/05 14:54]
ecoquery [Introduction]
enseignement:tp:bd:tp-xml-sql:2015 [2016/10/16 21:11]
ecoquery [Modalités de rendu]
Ligne 3: Ligne 3:
 Ce TP sera réalisé sous Oracle SQLDevelopper (disponible en salle TP Windows). Chaque étudiant se verra attribuer un compte oracle via tomuss (cf [[enseignement:aide:oracle|aide Oracle]]). Ce TP sera réalisé sous Oracle SQLDevelopper (disponible en salle TP Windows). Chaque étudiant se verra attribuer un compte oracle via tomuss (cf [[enseignement:aide:oracle|aide Oracle]]).
  
-===== Modalités de rendu ===== +Ce TP n'est pas à rendre
- +Des questions pourront cependant être posées en examen sur les techniques abordées dans ce TP.
-Ce TP est à réaliser seul ou en binôme (trinômes interdits). On téléchargera le fichier de réponses {{:enseignement:tp:bd:tp-xml-sql:forets-sql-xml.sql|}}. On complétera le fichier et on le renommera en ''Groupe_Nom1_Prenom1_Nom2_Prenom2_reponses-tp-xml.sql''. Groupe est le numéro groupe de TP de M1,  Nom1_Prenom1 est le nom et le prénom du premier membre du binôme, Nom2_Prenom2 est le nom et le prénom du second membre du binôme((le cas échéant)). +
- +
-<note warning>Ne pas modifier les commentaires déjà présents dans le fichier réponse à l'exception de l'entête contenant les noms/prénoms/numéro d'étudiant qu'il conviendra de compléter.</note> +
- +
-On déposera ce fichier sur [[http://spiralconnect.univ-lyon1.fr/webapp/activities/activities.jsp?containerId=4975035|spiral]]. +
- +
-Le non-respect de ces consignes pourra être sanctionné dans la note de ce TP. +
 ===== Introduction ===== ===== Introduction =====
  
Ligne 38: Ligne 30:
 </code> </code>
  
 +<note tip>Il est également possible de réaliser ce tp sous postgresql. Il convient alors d'insérer les données dans la base via le script suivant: {{:enseignement:tp:bd:tp-xml-sql:forets-postgres.sql.gz|}}</note>
 ===== Génération de XML ===== ===== Génération de XML =====
  
Ligne 57: Ligne 49:
 <!ELEMENT arbre(hauteur)> <!ELEMENT arbre(hauteur)>
 <!ELEMENT hauteur (#PCDATA)> <!ELEMENT hauteur (#PCDATA)>
-]></code>+]></code>27 ou 8 réponses selon que l'on met des hauteurs vides ou non.
   - Reprendre la question précédente et ajouter un attribut ''id'' (valeur obtenue via ''A'') dans l'élément ''arbre''.<code xml><!DOCTYPE arbre [   - Reprendre la question précédente et ajouter un attribut ''id'' (valeur obtenue via ''A'') dans l'élément ''arbre''.<code xml><!DOCTYPE arbre [
 <!ELEMENT arbre(hauteur)> <!ELEMENT arbre(hauteur)>
 <!ATTLIST arbre id CDATA #REQUIRED> <!ATTLIST arbre id CDATA #REQUIRED>
 <!ELEMENT hauteur (#PCDATA)> <!ELEMENT hauteur (#PCDATA)>
-]></code> +]></code>27 ou 8 réponses selon que l'on met des hauteurs vides ou non. 
-  - Ajouter, lorsqu'elle est disponible, le nom de l'espèce (code: ''ESPAR'', nom obtenu via la vue ''documentation''), toujours pour la parcelle 613376. Remarque: il y a deux arbres dont le code espece n'est pas dans documentation.<code xml><!DOCTYPE arbre [+  - Ajouter, lorsqu'elle est disponible, le nom de l'espèce (code: ''ESPAR'', nom obtenu via la vue ''documentation''((Attention, les codes sont réemployés ''select * from documentation where code = '02';'' renvoie 9 résultats))), toujours pour la parcelle 613376. Remarque: il y a deux arbres dont le code espece n'est pas dans documentation. On doit avoir le même nombre de résultats qu'à la question précédente (utiliser e.g. un [[http://www.geekphilip.com/2012/04/01/visual-explanation-of-sql-joins/|XXX OUTER JOIN]]). <code xml><!DOCTYPE arbre [
 <!ELEMENT arbre(hauteur,espece?)> <!ELEMENT arbre(hauteur,espece?)>
 <!ATTLIST arbre id CDATA #REQUIRED> <!ATTLIST arbre id CDATA #REQUIRED>
Ligne 74: Ligne 66:
 <!ELEMENT nom (#PCDATA)> <!ELEMENT nom (#PCDATA)>
 <!ELEMENT quantite (#PCDATA)> <!ELEMENT quantite (#PCDATA)>
-]> </code> +]> </code>115 réponses((:!: SQLDeveloper n'affiche que les 50 première si on ne fait pas défiler les résultats)) 
-  - Pour chaque parcelle dont l'identifiant (''IDP'') est inférieur ou égal à 600200, donner l'identifiant de la parcelle, le nombre d'arbres de cette parcelle et la liste des espèces présentes dans cette parcelle (son code ''ESPAR'' sous forme d'attribut XML et pour celles dont on le connait, leur nom sous forme de texte).<code xml><!DOCTYPE parcelle [+  - Pour chaque parcelle dont l'identifiant (''IDP'') est inférieur ou égal à 600200, donner l'identifiant de la parcelle et la liste //sans doublons// des espèces présentes dans cette parcelle (son code ''ESPAR'' sous forme d'attribut XML et pour celles dont on le connait, leur nom sous forme de texte).<code xml><!DOCTYPE parcelle [ 
 +<!ELEMENT parcelle (espece*)> 
 +<!ATTLIST parcelle id CDATA #REQUIRED> 
 +<!ELEMENT espece (#PCDATA)> 
 +<!ATTLIST espece code CDATA #REQUIRED> 
 +]></code>13 réponses 
 +  - Pour chaque parcelle dont l'identifiant (''IDP'') est inférieur ou égal à 600200, donner l'identifiant de la parcelle, le nombre d'arbres de cette parcelle et la liste //sans doublons// des espèces présentes dans cette parcelle (son code ''ESPAR'' sous forme d'attribut XML et pour celles dont on le connait, leur nom sous forme de texte).<code xml><!DOCTYPE parcelle [
 <!ELEMENT parcelle (nb,espece*)> <!ELEMENT parcelle (nb,espece*)>
 <!ATTLIST parcelle id CDATA #REQUIRED> <!ATTLIST parcelle id CDATA #REQUIRED>
Ligne 81: Ligne 79:
 <!ELEMENT espece (#PCDATA)> <!ELEMENT espece (#PCDATA)>
 <!ATTLIST espece code CDATA #REQUIRED> <!ATTLIST espece code CDATA #REQUIRED>
-]></code> +]></code>13 réponses 
-  - Pour les espèces présentes dans entre 2 et 5 parcelles, donner leur code, leur nom et la liste des parcelles (''IDP'') contenant des arbres de cette espèce.<code xml><!DOCTYPE espece [+  - Pour les espèces présentes dans entre 2 et 5 parcelles, donner leur code, leur nom et la liste //sans doublons// des parcelles (''IDP'') contenant des arbres de cette espèce.<code xml><!DOCTYPE espece [
 <!ELEMENT espece (nom,parcelle+)> <!ELEMENT espece (nom,parcelle+)>
 <!ATTLIST espece code CDATA #REQUIRED> <!ATTLIST espece code CDATA #REQUIRED>
Ligne 88: Ligne 86:
 <!ELEMENT parcelle EMPTY> <!ELEMENT parcelle EMPTY>
 <!ATTLIST parcelle id CDATA #REQUIRED> <!ATTLIST parcelle id CDATA #REQUIRED>
-]></code>+]></code>15 réponses
   - Reprendre la question précédente en ajoutant le nombre d'arbres de l'espèce concernée dans la parcelle concernée sous forme de texte dans l'élément ''parcelle''.<code xml><!DOCTYPE espece [   - Reprendre la question précédente en ajoutant le nombre d'arbres de l'espèce concernée dans la parcelle concernée sous forme de texte dans l'élément ''parcelle''.<code xml><!DOCTYPE espece [
 <!ELEMENT espece (nom,parcelle+)> <!ELEMENT espece (nom,parcelle+)>
Ligne 95: Ligne 93:
 <!ELEMENT parcelle (#PCDATA)> <!ELEMENT parcelle (#PCDATA)>
 <!ATTLIST parcelle id CDATA #REQUIRED> <!ATTLIST parcelle id CDATA #REQUIRED>
-]></code>+]></code>15 réponses 
 + 
 + 
 +<note tip>Pour les requêtes complexes, mettez d'abord au point une requête SQL //classique// dont vous modifierez ensuite la clause ''SELECT'' pour produire du XML </note>