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:2012 [2012/10/07 18:42]
ecoquery [Mise en place]
enseignement:tp:bd:tp-xml-sql:2012 [2012/10/09 13:49] (Version actuelle)
ecoquery [Modalités de rendu]
Ligne 1: Ligne 1:
 ====== TP Génération de XML via SQL ====== ====== TP Génération de XML via SQL ======
  
-Ce TP peut être réalisé dans les salles TP du Nautibus en démarrant la machine sous Linux, ou sur toute machine personnelle sur laquelle on aura installé un serveur PostgreSQL ainsi qu'un client type pgAdminIII.+Ce TP peut être réalisé dans les salles TP du Nautibus en démarrant la machine sous <del>Linux</del> Windows, ou sur toute machine personnelle sur laquelle on aura installé un serveur PostgreSQL ainsi qu'un client type pgAdminIII. Le fichier de données à utiliser dans ce cas est {{:enseignement:tp:bd:tp-xml-sql:tp-xml-sql-2012-data-postgresql.sql|}}
  
 +Il peut également être utilisé avec Oracle via le client SQLDeveloper. [[enseignement:aide:oracle|Connexion aux bases de données pédagogiques Oracle]].
 +Dans ce cas il faut charger les données en utilisant {{:enseignement:tp:bd:tp-xml-sql:tp-xml-sql-2012-data-oracle.sql|}}
 ===== Modalités de rendu ===== ===== Modalités de rendu =====
 +
 +**Le TP ne sera pas noté**
  
   * [[http://spiralconnect.univ-lyon1.fr/spiral/spiral.html#/activities/goto_folder/1807939|Page de dépôt sur Spiral]] pour rendre le TP.   * [[http://spiralconnect.univ-lyon1.fr/spiral/spiral.html#/activities/goto_folder/1807939|Page de dépôt sur Spiral]] pour rendre le TP.
  
-Ce TP est à réaliser seul ou en binôme (trinômes interdits). On téléchargera le fichier de réponses reponses-tp-xml-sql.txt. On complétera le fichier et on le renommera en ''Groupe_Nom1_Prenom1_Nom2_Prenom2_reponses-tp-xml-sql.txt''. Groupe est le numéro groupe de TD 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)).+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:reponses-tp-xml-sql.txt|reponses-tp-xml-sql.txt}}. On complétera le fichier et on le renommera en ''Groupe_Nom1_Prenom1_Nom2_Prenom2_reponses-tp-xml-sql.txt''. Groupe est le numéro groupe de TD 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)).
 On déposera ce fichier [[http://spiralconnect.univ-lyon1.fr/spiral/spiral.html#/activities/goto_folder/1807939|sur Spiral]] le dimanche 14 octobre 2012 au plus tard. On déposera ce fichier [[http://spiralconnect.univ-lyon1.fr/spiral/spiral.html#/activities/goto_folder/1807939|sur Spiral]] le dimanche 14 octobre 2012 au plus tard.
  
Ligne 14: Ligne 18:
 ===== Introduction ===== ===== Introduction =====
  
-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 un ensemble de relation dans une base PostgreSQL et on utilisera les fonctions SQL/XML du dans le [[enseignement:tp:bd:tp-xml-sql|TP cité ci-dessus]] ((les fonctions de génération SQL d'Oracle du TP sont utilisables également dans PostgreSQL, à l'exception des fonctions pour manipuler XQuery)) pour générer du XML à partir des données relationnelles.+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 un ensemble de relation dans une base PostgreSQL ({{:enseignement:tp:bd:tp-xml-sql:tp-xml-sql-2012-data-postgresql.sql|}}) ou Oracle ({{:enseignement:tp:bd:tp-xml-sql:tp-xml-sql-2012-data-oracle.sql|}}) et on utilisera les fonctions SQL/XML du dans le [[enseignement:tp:bd:tp-xml-sql|TP cité ci-dessus]] ((les fonctions de génération SQL d'Oracle du TP sont utilisables également dans PostgreSQL, à l'exception des fonctions pour manipuler XQuery)) pour générer du XML à partir des données relationnelles.
  
 ===== Mise en place ===== ===== Mise en place =====
Ligne 22: Ligne 26:
 Utiliser pgAdminIII pour se connecter à la base postgres en utilisant les login/mot de passe ''etudiant''/''etudiant''. Utiliser pgAdminIII pour se connecter à la base postgres en utilisant les login/mot de passe ''etudiant''/''etudiant''.
  
-Exécuter le script {{:enseignement:tp:bd:tp-xml-sql:tp-xml-sql-2012-data.sql|tp-xml-sql-2012-data.sql}} afin de créer les tables et d'ajouter des données.+Exécuter le script {{:enseignement:tp:bd:tp-xml-sql:tp-xml-sql-2012-data-postgresql.sql|}}/{{:enseignement:tp:bd:tp-xml-sql:tp-xml-sql-2012-data-oracle.sql|}} afin de créer les tables et d'ajouter des données.
  
 Écrire des requêtes SQL afin de générer du XML en réponse aux requêtes en français ci-dessous. Ce XML se situera toujours dans une colonne ''vxml'' dans le résultat de la requête. Il sera toujours conforme à la DTD indiquée dans la question. Écrire des requêtes SQL afin de générer du XML en réponse aux requêtes en français ci-dessous. Ce XML se situera toujours dans une colonne ''vxml'' dans le résultat de la requête. Il sera toujours conforme à la DTD indiquée dans la question.
Ligne 35: Ligne 39:
 ==== Questions ==== ==== Questions ====
  
 +  - Donner, pour chaque acteur identifié par son ''id'', son nom. <code xml><!DOCTYPE acteur [ 
 +<!ELEMENT acteur (nom)> 
 +<!ELEMENT nom (#PCDATA)> 
 +]></code> 
 +  - Reprendre la question précédente et ajouter un attribut ''id'' dans l'élément acteur.<code xml><!DOCTYPE acteur [ 
 +<!ELEMENT acteur (nom)> 
 +<!ATTLIST acteur id CDATA #REQUIRED> 
 +<!ELEMENT nom (#PCDATA)> 
 +]></code>  
 +  - Pour chaque role (table ''joue_dans'') donner le titre du film et le nom de l'acteur associé, en plus, le cas échéant, du nom du personnage.<code xml><!DOCTYPE role [ 
 +<!ELEMENT role (acteur,film,personnage?)> 
 +<!ELEMENT acteur (#PCDATA)> 
 +<!ELEMENT film (#PCDATA)> 
 +<!ELEMENT personnage (#PCDATA)> 
 +]></code>  
 +  - Reprendre la question 2 et ajouter un élément ''nbRoles'' dont la valeur est le nombre de roles interprétés par l'acteur en question.<code xml><!DOCTYPE acteur [ 
 +<!ELEMENT acteur (nom,nbRoles)> 
 +<!ATTLIST acteur id CDATA #REQUIRED> 
 +<!ELEMENT nom (#PCDATA)> 
 +<!ELEMENT nbRoles (#PCDATA)> 
 +]></code>  
 +  - Pour chaque film, donner son titre, son ''id'' comme attribut, son annee et les acteurs (plus précisement leur nom) qui y ont participé.<code xml><!DOCTYPE film [ 
 +<!ELEMENT film (titre,annee,acteur*)> 
 +<!ATTLIST film id CDATA #REQUIRED> 
 +<!ELEMENT titre (#PCDATA)> 
 +<!ELEMENT annee (#PCDATA)> 
 +<!ELEMENT acteur (#PCDATA)> 
 +]></code>  
 +  - Pour les acteurs (nom et id) et les films (titre) dans lesquels ils ont joué, en se limitant aux acteurs ayant joué dans au moins deux films.<code xml><!DOCTYPE acteur [ 
 +<!ELEMENT acteur (nom,film*)> 
 +<!ATTLIST acteur id CDATA #REQUIRED> 
 +<!ELEMENT nom (#PCDATA)> 
 +<!ELEMENT film (#PCDATA)> 
 +]></code>  
 +  - Reprendre la question 5 et y ajouter les réalisateurs et les producteurs<code xml><!DOCTYPE film [ 
 +<!ELEMENT film (titre,annee,acteur*, realisateur*, producteur*)> 
 +<!ATTLIST film id CDATA #REQUIRED> 
 +<!ELEMENT titre (#PCDATA)> 
 +<!ELEMENT annee (#PCDATA)> 
 +<!ELEMENT acteur (#PCDATA)> 
 +<!ELEMENT realisateur (#PCDATA)> 
 +<!ELEMENT producteur (#PCDATA)> 
 +]></code>