Deuxième Interrogation de Bases de Données Corrigé



Documents pareils
Cours 4 : Agrégats et GROUP BY

Cours Bases de données 2ème année IUT

TP Programmation Java / JDBC / Oracle

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Programmation d application Bases de données avec Java

Corrigé des exercices sur les références

Java DataBaseConnectivity

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Programme Compte bancaire (code)

Corrigés détaillés des exercices

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

A QUOI SERVENT LES BASES DE DONNÉES?

TP Contraintes - Triggers

OpenPaaS Le réseau social d'entreprise

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Bases de données avancées

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Introduction à JDBC. Accès aux bases de données en Java

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Premiers Pas en Programmation Objet : les Classes et les Objets

Intégrité sémantique dans les bases de données relationnelles

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Chapitre 5 : Les procédures stockées PL/SQL

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Devoir Data WareHouse

Tutoriel d installation de Hibernate avec Eclipse

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Arbres binaires de recherche

Auto-évaluation Programmation en Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Chapitre 10. Les interfaces Comparable et Comparator 1

Programmer en JAVA. par Tama

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Synchro et Threads Java TM

Java Licence Professionnelle CISII,

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

TD3: tableaux avancées, première classe et chaînes

A QUOI SERVENT LES BASES DE DONNÉES?

Création d une application JEE

Présentation Windows Azure Hadoop Big Data - BI

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Algorithmique & programmation

Oracle Le langage procédural PL/SQL

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Gestion de base de données

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Flux de données Lecture/Ecriture Fichiers

Les bases de données

Gestion du cache dans les applications ASP.NET

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

RMI le langage Java XII-1 JMF

Bases de Données relationnelles et leurs systèmes de Gestion

Notes de cours : bases de données distribuées et repliquées

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

Calcul Parallèle. Cours 5 - JAVA RMI

Remote Method Invocation Les classes implémentant Serializable

Dis papa, c est quoi un bus logiciel réparti?

Bases de données relationnelles

ACTIVITÉ DE PROGRAMMATION

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Java 1.5 : principales nouveautés

Remote Method Invocation en Java (RMI)

1 Position du problème

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Programmation Objet Java Correction

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Remote Method Invocation (RMI)

Création d un service web avec NetBeans 5.5 et SJAS 9

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Construire une base de donnée pour bibliothèque

[BASE DE DONNEES MULTIMEDIA]

Introduction au PL/SQL Oracle. Alexandre Meslé

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

Projet de programmation (IK3) : TP n 1 Correction

Gestion distribuée (par sockets) de banque en Java

Tp 1 correction. Structures de données (IF2)

Paginer les données côté serveur, mettre en cache côté client

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

I4 : Bases de Données

Utilisation d objets : String et ArrayList

Langage Java. Classe de première SI

PDO : PHP Data Object 1/13

Exploitation de bases de données relationnelles et orientées objet IFT287

Développement Logiciel

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Transcription:

Deuxième Interrogation de Bases de Données Corrigé Durée : 60 minutes Tous les documents sont autorisés Une agence de voyages organise des circuits touristiques dans divers pays à l aide d une base de données Oracle dont le schéma est décrit ci-dessous : Ville numville nomville numpays Etape numville numordre duree Voyage nomvoyage nbmin nbmax typepension Pays numpays nompays formalite vaccin Tarif DateDeb prix La table Voyage, donne les noms des voyages dont dispose l agence. Les attributs nbmin et nbmax désignent le nombre (minimal et maximal, respectivement) des personnes qui peuvent participer a ce voyage. L attribut typepension détermine le type de pension à laquelle les clients ont droit. Cet attribut peut prendre la valeur «P» (pension complète) ou la valeur «DP» (demi-pension). Les différentes étapes d un voyage sont recensées dans la table Etape. L attribut numordre (un nombre entier) dit que le voyage dont le numéro est marque l étape dont le numéro est numordre à la ville dont le numéro est numville. La table Tarif fixe le prix des voyages selon leur date de départ. Voici le type de chaque attribut : numpays, numville,, nbmin, nbmax, numordre, duree : NUM- BER(8) nompays, nomville : VARCHAR2(20) nomvoyage : VARCHAR2(60) formalite : CHAR(2) ('CI', 'P', ou 'PV') vaccin : CHAR(3) ('Oui' ou 'Non') typepension : CHAR(2) ('P' ou 'DP') DateDeb : DATE prix : NUMBER(8,2) Page 1/5 Bases de données, Interrogation 2 11/12/2013

Question 1. (6 points) Créez une vue qui liste les voyages en pension complete qui marquent une étape d une durée d au moins trois jours dans une même ville. Cette vue devrait comporter un maximum d information : le nom du voyage, la ville, son numéro d étape, son pays, les formalités à accomplir, les vaccins. create or replace view vuevoyages as select e.numvoyage, nomville, numordre, duree, nompays, formalite, vaccin from voyage v, etape e, ville vi, pays p where v.numvoyage = e.numvoyage and e.numville = vi.numville and vi.numpays = p.numpays and duree >= 3 and typepension = 'P'; Quels attributs pourront être modifiés au travers de cette vue si on travaille en suivant la norme SQL2? Aucun attribut, car la vue porte sur plusieurs tables. Et si on travaille avec le SQL d Oracle? Seulement les attributs numvoyage, numordre et duree sont modifiables, car la table etape préserve la clé au travers de la jointure. Question 2. (7 points) Ecrire une fonction PL/SQL qui a pour paramètre le nom d un pays et une date et qui renvoie la première date disponible pour le départ d un voyage qui fait étape dans ce pays et qui commence après cette date. S il n existe pas de tels voyages, la fonction lèvera l exception -20020 renvoyant le message «Pas de départs». create or replace function depart (monpays pays.nompays%type, madate tarif.datedeb%type) return varchar2 is d tarif.datedeb%type; zero exception; pragma exception_init(zero, -20020); begin select min(datedeb) into d from pays p, ville v, etape e, tarif t where p.numpays = v.numpays and v.numville = e.numville and e.numvoyage = t.numvoyage and upper(nompays) = upper(monpays) and datedeb >= madate; if d is null then raise zero; end if; return 'Premier depart le ' to_char(d,'dd month yyyy'); exception when zero then return sqlerrm 'Pas de depart'; Page 2/5 Bases de données, Interrogation 2 11/12/2013

end depart; / ou bien create or replace function depart (monpays pays.nompays%type, madate tarif.datedeb%type) return varchar2 is d tarif.datedeb%type; begin select min(datedeb) into d from pays p, ville v, etape e, tarif t where p.numpays = v.numpays and v.numville = e.numville and e.numvoyage = t.numvoyage and upper(nompays) = upper(monpays) and datedeb >= madate; if d is null then raise_application_error(-20020,'pas de depart'); end if; return 'Premier depart le ' to_char(d,'dd month yyyy'); end depart; / Donner la première date disponible pour un départ au Japon après le 1 er août 2014. execute dbms_output.put_line(depart('japon','01-08-2014')); Page 3/5 Bases de données, Interrogation 2 11/12/2013

Question 3. (7 points) Ecrire un programme JDBC qui, si on lui passe en arguments par la ligne de commande un nom de pays et une date, affiche la première date disponible pour le départ d un voyage qui fait étape dans ce pays et qui commence après cette date. S il n existe pas de tels voyages, le programme affichera «ORA-20020: Pas de départ». Conseil : Essayez d utiliser la Question 2. import java.sql.*; public class Execution { public static void main(string[] args) throws SQLException{ String url = "jdbc:oracle:thin:" + "LOGIN/MDP@bc-hs4.ens.iut-orsay.fr:1521:etudom"; try { Class.forName("oracle.jdbc.driver.OracleDriver"); catch (ClassNotFoundException e) { System.out.println("Pilote introuvable"); System.exit(1); Connection connexion = DriverManager.getConnection(url); CallableStatement cst = connexion.preparecall( "{? = call depart(?,?)"); cst.setstring(2, args[0]); cst.setstring(3, args[1]); //ou alors //CallableStatement cst = connexion.preparecall( // "{? = call depart('"+args[0]+"','"+args[1]+"')"); cst.registeroutparameter(1,java.sql.types.varchar); cst.execute(); System.out.println(cst.getString(1)); cst.close(); connexion.close(); solution avec la deuxième version de la fonction «Depart» import java.sql.*; public class Execution { public static void main(string[] args) throws SQLException{ String url = "jdbc:oracle:thin:" + "LOGIN/MDP@bc-hs4.ens.iut-orsay.fr:1521:etudom"; try { Class.forName("oracle.jdbc.driver.OracleDriver"); catch (ClassNotFoundException e) { System.out.println("Pilote introuvable"); Page 4/5 Bases de données, Interrogation 2 11/12/2013

System.exit(1); Connection connexion = DriverManager.getConnection(url); CallableStatement cst = connexion.preparecall( "{? = call depart(?,?)"); cst.setstring(2, args[0]); cst.setstring(3, args[1]); //ou alors //CallableStatement cst = connexion.preparecall( // "{? = call depart('"+args[0]+"','"+args[1]+"')"); cst.registeroutparameter(1,java.sql.types.varchar); try{ cst.execute(); catch (SQLException e){ System.out.println(e.getSQLState()); System.out.println(cst.getString(1)); cst.close(); connexion.close(); Page 5/5 Bases de données, Interrogation 2 11/12/2013