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
Prochaine révision Les deux révisions suivantes
enseignement:tp:bd:tp-xml-sql:2015 [2015/10/05 14:40]
ecoquery [Questions]
enseignement:tp:bd:tp-xml-sql:2015 [2015/10/06 14:24]
ecoquery [Vues relationnelles]
Ligne 9: Ligne 9:
 <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> <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]].+On déposera ce fichier sur [[http://spiralconnect.univ-lyon1.fr/webapp/activities/activities.jsp?containerId=4975035|spiral]] **pour le 13/10/2015**
  
 Le non-respect de ces consignes pourra être sanctionné dans la note de ce TP. Le non-respect de ces consignes pourra être sanctionné dans la note de ce TP.
Ligne 17: Ligne 17:
 L'objectif de ce TP est de pratiquer la création de (fragments de) documents XML directement à partir de données relationnelles en SQL. Le TP consiste dans un premier temps à lire et comprendre le TP "[[enseignement:tp:bd:tp-xml-sql|Générer du XML dans Oracle]]". Dans un deuxième temps, on créera des vues à interroger. Enfin on répondra aux questions dans le fichier de réponses en s'inspirant du TP cité ci-dessus. L'objectif de ce TP est de pratiquer la création de (fragments de) documents XML directement à partir de données relationnelles en SQL. Le TP consiste dans un premier temps à lire et comprendre le TP "[[enseignement:tp:bd:tp-xml-sql|Générer du XML dans Oracle]]". Dans un deuxième temps, on créera des vues à interroger. Enfin on répondra aux questions dans le fichier de réponses en s'inspirant du TP cité ci-dessus.
  
 +  * [[http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions002.htm#SQLRF51185|Doc Oracle sur les fonctions XML]]
 ===== Vues relationnelles ===== ===== Vues relationnelles =====
  
Ligne 37: Ligne 38:
 </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 62: Ligne 63:
 <!ELEMENT hauteur (#PCDATA)> <!ELEMENT hauteur (#PCDATA)>
 ]></code> ]></code>
-  - 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.<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 75:
 <!ELEMENT quantite (#PCDATA)> <!ELEMENT quantite (#PCDATA)>
 ]> </code> ]> </code>
-  - 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> 
 +  - 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 88:
 <!ATTLIST espece code CDATA #REQUIRED> <!ATTLIST espece code CDATA #REQUIRED>
 ]></code> ]></code>
-  - 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 95: Ligne 102:
 <!ATTLIST parcelle id CDATA #REQUIRED> <!ATTLIST parcelle id CDATA #REQUIRED>
 ]></code> ]></code>
 +
 +
 +<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>