Licence d informatique BD l examen du 14/06/ corrigé

Documents pareils
Java DataBaseConnectivity

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

Programmation d application Bases de données avec Java

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

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

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

TP Programmation Java / JDBC / Oracle

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

JDBC le langage Java XVI-1 JMF

Les bases de données

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

A QUOI SERVENT LES BASES DE DONNÉES?

Accès aux bases de données

Olivier Mondet

Construire une base de donnée pour bibliothèque

Le langage SQL (première partie) c Olivier Caron

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)

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

Java et les bases de données

Langage SQL : créer et interroger une base

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

Corrigé des exercices sur les références

PHP 5. La base de données MySql. A. Belaïd 1

1 Position du problème

CREATION WEB DYNAMIQUE

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

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

Programme Compte bancaire (code)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Java - MySQL. Code: java-mysql

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Panorama des Bases de Données

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

Mysql. Les requêtes préparées Prepared statements

.../5. Gestion de Bases de Données (J. Wijsen) 27 janvier 2011 NOM + PRENOM : Orientation + Année : Cet examen contient 8 questions. Durée : 2 heures.

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

Plan. Accès aux données dans le framework.net. ADO.NET Entity Framework LINQ ADO.NET ADO.NET. 1. ADO.NET Mode connecté Mode non connecté

1. Langage de programmation Java

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

I4 : Bases de Données

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

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

Intégrité des données

Application web de gestion de comptes en banques

Logiciel de gestion de caisse et d ardoises

1. Base de données SQLite

Création d une application JEE

Pratique et administration des systèmes

Bases de données relationnelles

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

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

Vincent Augusto

TP Bases de données réparties

Java Licence Professionnelle CISII,

Le Langage De Description De Données(LDD)

Connectivité aux bases de données Java (JDBC)

Package Java.util Classe générique

SQL Historique

Bases de données - Modèle relationnel

Bases de données Outils de gestion

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

Tutoriel d installation de Hibernate avec Eclipse

A QUOI SERVENT LES BASES DE DONNÉES?

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

TP Contraintes - Triggers

Bases de données et sites WEB Licence d informatique LI345

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

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

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

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

Une introduction à Java

TP, première séquence d exercices.

La base de données XML exist. A. Belaïd

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

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Bases de données. PTSI Lycée Eiffel. 28 février 2014

NF26 Data warehouse et Outils Décisionnels Printemps 2010

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

Introduction au Système de Gestion de Base de Données et aux Base de Données

Compétences Business Objects

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

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

Gestion de base de données

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

BTS/CGO P10 SYSTEME INFORMATION Année

... /5. Bases de Données I (J. Wijsen) 23 janvier 2009 NOM + PRENOM : Orientation + Année : Cet examen contient 11 questions.

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Introduction aux Bases de Données 2004/2005

Bases de Données Relationnelles. Le Modèle Relationnel

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

Paradox 9. Guide de l utilisateur jpdox Web Utilities

IFT3030 Base de données. Chapitre 1 Introduction

Transcription:

Licence d informatique BD l examen du 14/06/2004 - corrigé Durée 3h notes manuscrites autorisées livres interdits Remplissez les cadres prévus (au fond gris), n écrivez rien à l extérieur Ne mettez aucune information personnelle sur ce formulaire, insérez-le dans une feuille double avec un coin cacheté 1. Des requêtes La base de données du restaurant «Chez SQL» contient trois tables de schémas suivants (les types des attributs sont évident et omis) : Plats (idplat, nom, type, prix) Vins(idVin, nom, couleur, quantité,prix) Accord(idPlat,idVin) 11. Pour aider un client exprimez une requête SQL qui affiche tous les noms de vins rosés qui coûtent moins de 30 euros et qui s accordent avec le gigot. SELECT v.nom FROM Vins v, Plats p, Accords a WHERE v.idvin=a.idvin AND p.idplat=a.idplat AND v.couleur= "rosé" AND v.prix<30 AND p.nom= "gigot" 12. Exprimez la même requête en algèbre relationnelle. R= π Vins.nom (σ couleur = rosé, prix<30 (Vins) Accords σ nom=gigot (Plats)) 13. Pour faire un destockage divisez par deux les prix de tous les vins qui ne s accordent avec aucun plat UPDATE Vins SET prix=prix/2 WHERE idvin NOT IN (SELECT idvin FROM Accords) 14. Pour chaque plat (sauf les desserts) donnez le prix minimum du vin qui s accorde avec ce plat SELECT p.nom, MIN (v.prix) FROM Vins v, Plats p, Accords a WHERE v.idvin=a.idvin AND p.idplat=a.idplat AND p.type!="dessert" GROUP BY p.nom 15. Faites une liste de couples de plats qui peuvent se consommer avec le même vin rouge SELECT p1.nom, p2.nom FROM Accords a1, Accords a2, Plats p1, Plats p2, Vins v WHERE v.idvin=a1.idvin AND p1.idplat=a1.idplat AND v.idvin=a2.idvin AND p2.idplat=a2.idplat AND v.couleur= "rouge" AND p1.idplat<p2.idplat

2. Analyse de forme normale Une bibliothèque utilise une base de données avec une table unique de schéma suivant : Prêt(noPret, nolecteur, adresse, telephone, datepret, dateretour, nolivre, ISBN, titre, auteur) 21. Trouvez toutes ses clés : nopret 22. Enumérez ou représentez par un graphe les dépendances fonctionnelles nopret tous les attributs ; nolecteur adresse, telephone nolivre ISBN titre,auteur 23. Cochez les cases Oui/Non et expliquez brièvement : Est la table en : Oui Non Pourquoi 1FN? X Tous les attributs sont atomiques 2FN? X Rien ne dépend d une partie propre d une clé 3FN? X nolecteur adresse est une dépendance (non-clé non-clé) BCFN? X Comme ce n est pas 3FN, ça ne peut être BCFN non plus 24. Donnez un exemple de redondances possibles (pensez à les encercler) dans cette BD : nopret nolecteur adresse Telephone datepret dateretour nolivre ISBN titre Auteur 1 100 Paris 0142030405 14/06/04 18/06/04 173 111111 BD Matthieu 2 100 Paris 0142030405 14/06/04 14/07/04 192 113331 SGBD Flory 3 200 Ivry 0155555555 15/06/04 16/06/04 233 342432 BD Tintin Hergé 25. En utilisant votre table du point précédant (24) donnez un exemple d anomalie de modification avec quelques explications. Supposons que le lecteur no 100 déménage à Nanterre, et son no de téléphone devient 0202020202. Si on modifie cette information seulement dans le premier tuple, ça rend la BD incohérente, parce que dans le deuxième tuple c est toujours Paris et 0142030405 pour la même personne 26. Normalisez le schéma : Prêt= Prêt(noPret, nolecteur, datepret, dateretour, nolivre) Prêt(noLecteur, adresse, telephone) Prêt(noLivre, ISBN) Prêt(ISBN, titre, auteur ) En quelle forme normale est le résultat? BCFN Est-ce qu il y a des pertes des DF? Non

3. JDBC lecture de programme 31. Ajoutez les commentaires expliquant le sens et le fonctionnement du programme dans les endroits prévus Import java.sql.*; // on charge le package JDBC Public class MaClasseJDBC { public static void main(string args[]) { String url = "jdbc:odbc:entreprise"; // l adresse de la BD Connection con=null; Statement stmt; String query = "select NOM,PRENOM,AGE from CLIENTS"; try // on essaye (exceptions possibles) { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // on charge le driver Con = DriverManager.getConnection(url,"admin", "ij"); stmt = con.createstatement(); ResultSet rs = stmt.executequery(query); // on connecte à la BD // on fait une zone de requête // on execute la requite en récupérant // le résultat dans rs System.out.println("Liste de???:"); While (rs.next()) { String n = rs.getstring(1); // nom String p = rs.getstring(2); // prenom int a = rs.getint(3); // age if (a>40) {System.out.println(p + " " + n + " " + a*12); catch(java.lang.classnotfoundexception e) { System.err.println("Pb de driver : " + e.getmessage()); catch(sqlexception e) { System.err.println("SQLException: " + e.getmessage()); if (con!=null) try {con.close(); catch(exception e){ // on parcours rs // on trouve le 1er, le 2 ème et le 3 ème //attributs du tuple courant //On traite l exception «la classe //du driver non chargée» // On traite autres exceptions de //JDBC // On nettoie en fermant la connexion 32. Que fait ce programme? Expliquez en français Expliquez en SQL en donnant une requête équivalente On affiche les prénoms, les noms et les ages (en mois) de tous les clients agés (>40 ans) SELECT prenom, nom, age*12 FROM Clients WHERE age>40

4. Conception d une BD On veut faire une base de données plus complète du restaurant «Chez SQL». Cette base doit contenir les trois tables décrites dans l exercice 1, mais également contenir l information - sur les tables : libre/ réservé/occupé, nombre de places - sur les commandes de plats : quel plats, pour quelle table, pour quand, servi ou non, payé ou non - sur les commandes de vins : même information 41. Dessinez un MCD pour cette BD Plats idplat nom type prix Accord Vins idvin nom couleur quantité prix Concerne1 Concerne2 1,1 1,1 CommandesPlats idcommande temps servi payé Tables notable persmax état CommandesVins idcommande temps servi payé

42. Déduisez le schéma de cette BD Les trois tables de l exo 1 et encore Tables(noTable, persmax, etat) CommandesPlats(noCommande, #idplat, #notable, temps, servi, payé) CommandesVins(noCommande, #idvin, #notable, temps, servi, payé) 43. Proposez trois contraintes d intégrité non référentielle pour cette BD 1 Dans CommandesPlats et CommandesVins si c est payé, alors c est servi : CHECK(payé<=servi) 2 Il n y que trois états possibles pour une table : CHECK(etat IN ( libre, reservé, occupé )) 3 Contrainte de domaine pour les attributs numériques : CHECK(prix >=0) 44. Complétez l ordre SQL pour créer la table CommandesPlats en tenant compte de l intégrité référentielle et non-référentielle. CREATE TABLE CommandesPlats( nocommande Integer PRIMARY KEY, idplat integer FOREIGN KEY REFERENCES Plats, notable integer FOREIGN KEY REFERENCES Tables, temps Time, servi Integer(1), payé Integer(1) CHECK(payé <= servi) )

45. La table 7 a terminé le repas et demande l addition. Ecrivez un programme SQL qui fait le nécessaire (imprime l addition, note que la commande est payée et la table est libre). Soyez attentifs, ne faites pas les gens payer pour les plats déjà reglés par d autres clients ayant utilisé la même table avant. // on imprime les plats non payés avec leurs prix SELECT p.nom, p.prix FROM CommandesPlats c, Plats p WHERE c.idplat=p.idplat AND c.notable=7 AND c.payé=0; //On imprime le total SELECT SUM(p.prix) AS Total de plats FROM CommandesPlats c, Plats p WHERE c.idplat=p.idplat AND c.notable=7 AND c.payé=0; // pareil pour les vins SELECT v.nom, v.prix FROM CommandesVins c, Vins v WHERE c.idvin=v.idvin AND c.notable=7 AND c.payé=0; //On imprime le total SELECT SUM(v.prix) AS Total de vins FROM CommandesVins c, Vins v WHERE c.idvin=v.idvin AND c.notable=7 AND c.payé=0; // je n imprime pas le total global // On note que c est payé UPDATE CommandesPlats SET Payé=1 WHERE notable=7 AND Payé=0 // On note que la table est libre UPDATE Tables SET etat="libre" WHERE notable=7