TP base de données SQLite. 1 Différents choix possibles et choix de SQLite : 2 Définir une base de donnée avec SQLite Manager



Documents pareils
Le langage SQL Rappels

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

1 Introduction et installation

TD n 10 : Ma première Base de Données

Langage SQL : créer et interroger une base

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

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

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

Olivier Mondet

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

Objectifs du TP : Initiation à Access

ESPACE COLLABORATIF SHAREPOINT

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Le modèle de données

Bases de données cours 4 Construction de requêtes en SQL. Catalin Dima

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

Mise à jour: 29 janvier Instructions Paiement en ligne

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

Bases de données relationnelles

Création de Sous-Formulaires

Fiche n 15 : Envoi d , alarme visuelle et synchronisation Outlook

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

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

SOMMAIRE. Travailler avec les requêtes... 3

Créer son blog pas à pas

Créer le schéma relationnel d une base de données ACCESS

1 Modélisation d une base de données pour une société de bourse

TP Bases de données réparties

1. Base de données SQLite

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

Encryptions, compression et partitionnement des données

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Base de données relationnelle et requêtes SQL

Débuter avec OOo Base

COMMENT CREER SIMPLEMENT UN TABLEAU DE BORD AVEC SAS BI DASHBOARD 4.3?

COURS WINDEV NUMERO 3

Dossier I Découverte de Base d Open Office

Pratique et administration des systèmes

Le Langage De Description De Données(LDD)

TABLEAU CROISE DYNAMIQUE

Notice d installation et d utilisation du blog nomade avec un nouveau blog

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT

SQL Historique

Introduction : L accès à Estra et à votre propre espace Connexion Votre espace personnel... 5

TP Contraintes - Triggers

Création et Gestion des tables

Le langage C. Séance n 4

Taxe de séjour - Manuel de l utilisateur. Déclaration en ligne. Logiciel 3D Ouest

Stopack : logiciel pour l entrepôt

PROCEDURE D EXPORT-IMPORT DU CERTIFICAT InVS INTERNET EXPLORER

Cours: Les Jointures 1

1. Introduction Création d'une requête...2

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Base est le module pour les bases

Création d'un questionnaire (sondage)

EXCEL TUTORIEL 2012/2013

Bases de données élémentaires Maude Manouvrier

PARAMETRAGE D INTERNET EXPLORER POUR L UTILISATION DE GRIOTTE

Fiche n 14 : Import / Export avec PlanningPME

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Fiche n 2 : Créer une activité (avec ressource associée)

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

A QUOI SERVENT LES BASES DE DONNÉES?

INTRODUCTION AU DATA MINING

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

Les différentes étapes à suivre pour la création d un feuillet

CREATION WEB DYNAMIQUE

Premier cours d informatique

SIGAFINANCE. Quoi de neuf et correctifs Version (20 février 2015)

MANUEL DE L UTILISATEUR

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

Internet : Naviguer en toute sérénité

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

Les différents types de relation entre les tables

Volet de visualisation

Inscriptions en ligne

TP01: Installation de Windows Server 2012

HTTP Commander. Table des matières. 1-Présentation de HTTP Commander

Rapports d activités et financiers par Internet. Manuel Utilisateur

Manuel d utilisation de la messagerie.

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Le commerce électronique (ou e-commerce)

Édu-groupe - Version 4.3

Réglages du module de sauvegarde de Biblionet (Monoposte)

Le réseau et les tables virtuelles Synapse

Une fois votre tableau excel complet, cliquer sur fichier enregistrer sous type de fichier (menu déroulant) csv (séparateur : point virgule).

Extended Communication Server 4.1 : VoIP-SIP- Guide Utilisateur

< Atelier 1 /> Démarrer une application web

WebSMS. Avril WebSMS Orange Mali - Guide utilisateur

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Guide de configuration. Logiciel de courriel

Mysql avec EasyPhp. 1 er mars 2006

Retour table des matières

Préparez la rentrée!

Transcription:

TP base de données SQLite 1 Différents choix possibles et choix de SQLite : La plupart des logiciels de gestion de base de données fonctionnent à l aide d un serveur. Ils demandent donc une installation plus importante. Nous nous contenterons ici de SQLite, qui ne demande qu une installation très rapide et de son interface SQLite Manager qui s installe comme outil (plugin) de Firefox. Pour installer SQLite chez vous : http ://www.sqlite.org, puis pour SQLite Manager : installer Firefox si vous ne l avez pas puis installer le module SQLite Manager à partir du menu Outils. 2 Définir une base de donnée avec SQLite Manager Pour lancer SQLite Manager : Lancer Firefox puis dans le menu Outil, sélectionner SQLite Manager. 2.1 Définition d un schéma relationnel simple avec une clé primaire Dans le Menu Base de donnée sélectionner : nouvelle base de donnée Une fenêtre s ouvre : donner un nom à votre base de donnée. Disons que vous voulez créer une base eleve analogue à celles vues en cours. Une fois que vous lui avez donné un nom et sélectionné un endroit pour l enregistrer : Dans le Menu Table sélectionner : créer une table. Une fenêtre s ouvre dans laquelle vous allez pouvoir créer vos différents attributs. Ici : prénom avec le domaine (Datatype) VARCHAR (chaîne de caractères) : on peut indiquer une longueur maximum pour la chaîne par exemple VARCHAR(20), datenaissance avec pour domaine INT (noter qu il existe aussi un type DATETIME), sexe avec pour domaine VARCHAR(1) : un seul caractère. En cochant vous pouvez définir la clé primaire (primary key) : vous notez qu alors les attributs correspondant à la clé primaire ne peuvent pas être vide (Non Null) Lorsque vous validez vous obtenez le code sql correspondant à votre définition de schéma relationnel. 2.2 Remplissage de la table A gauche de votre fenêtre de Sqlite Manager, apparaissent les tables présentes en mémoire. A ce stade comme vous n avez créé qu une table eleve, elle est seule à apparaître. En la sélectionnant, vous pouvez la remplir avec le bouton Ajouter une nouvelle entrée. 1

3 Lecture et premières requêtes sur une base plus riche 3.1 Lecture d une base de données Récupérer le fichier : hotel.sqlite dans /profs/bondil/public/ Pour charger le fichier hotel.sqlite dans SQLite Manager, dans le menu Base de données sélectionner Connecter la base de données. Vous voyez apparaître les 8 tables contenues dans cette base. Trois d entre elles (eleves, notes, cours) ne nous concerneront pas pour ce TP. Nous allons utiliser les 5 tables qui concernent une agence de Tourisme. Par commodité, voici les schémas de ces 5 tables de Tourisme, sur papier : resorts (station en anglais) : (ns,noms,types,capch) : la station de numéro ns a pour nom noms, est de type types (mer ou montagne), et a une capacité de capch chambres au total. hotels (hôtels en anglais) : (ns,nh,nomh,adrh,telh,cath,deb,fin,nbch) : l hôtel de numéro nh se trouve dans la station de numéro ns, a pour nom nomh, a nbch chambres, se trouve à l adresse adrh, a pour téléphone telh, est de catégorie cath (nombre d étoiles) et est ouvert de deb à fin. rooms : (ns,nh,nch,typch,prix) : la chambre numéro nch de l hôtel numéro nh est de type typch (S=Simple,D=douche,DWC= douche et WC,SDB=salle de bain) et coûte prix euros. guests : (ncl,nomcl,adrcl,telcl) : le client numéro ncl a pour nom nomcl, pour adresse adrcl, avec pour téléphone telcl. bookings : (ns,nh,nch,jour,ncl) la chambre numéro nch de l hôtel numéro nh de la station numéro ns est occupé le jour Jour par le client de numéro ncl. 3.2 Requêtes en algèbre relationnelle (TD) et en SQL (TP) Ecrire en utilisant l algèbre relationnelle (TD) et en langage SQL (TP) les requêtes suivantes. Pour entrer ces requêtes et les exécuter avec SQLite Manager cliquer sur Executer le SQL (R1) Liste des numéros et noms des stations de montagne avec leur capacité en chambres. Vérif. : On doit obtenir six réponses Rappel du cours : en SQL : SELECT... FROM... WHERE (R2) Liste des noms des hôtels trois étoiles et quatre étoiles. Vérif. : On doit obtenir 31 réponses. Attention : a priori nomh n est pas une clé primaire... il se pourrait que plusieurs hotels aient le même nom. Dans ce cas, il seront répétés dans la liste, ce qui ne la rend pas très précise. Une vraie liste précise rajouterait les clefs primaires ns,nh de Hotels. Pour voir combien il y a de noms d hôtels distincts dans la réponse à votre requête (R2) remplacer SELECT par SELECT DISTINCT. Mais ce faisant, vous perdrez ici de l information... (R3) Liste des noms et des numéros des hôtels avec leur adresse, tél., catégorie, se trouvant dans une station balnéaire. Indication : Attention, il y a deux tables à croiser... car le caractère balnéaire d une station ne se voit pas dans la table hôtel. Vérif. : On doit obtenir 37 réponses. (R4) Liste des noms des stations au bord de la mer ayant des hôtels 4 étoiles. N.B. Vous obtiendrez quatre résultats avec une entrée qui apparaît deux fois. Ceci vient du fait que, contrairement à la déf. théorique de l algèbre relationnelle, en SQL les tables acceptent les doublons. Pour éviter les doublons, utiliser la requête SELECT DISTINCT (R5) Liste des noms et adresses des clients dont l adresse est un hôtel. Vérif. : 2 réponses. (R6) Liste des noms et adresses des clients ayant réservé à la montagne. 2

Remarque : Ici deux jointures. En fait la jointure naturelle est associative. Vérif. : 889 réponses. A partir de maintenant, on ne demande pas l écriture en algèbre relationnelle, seulement le SQL pour l instant. (R7) Liste (sans répétitions) des hôtels avec leur nom, adresse, numéro de station ayant au moins une chambre de réservée et liste des hotels n ayant aucune chambre de réservée. Vérif. : 77 réponses et 1 réponse. Indication : On pourra, pour coder la différence d ensembles, utiliser la commande EXCEPT entre deux tables. On peut aussi utiliser la commande NOT IN. (R8) Liste des hôtels avec leur numéro, numéro de station, nom, adresse, dont toutes les chambres ont un prix inférieur à 40 euros. Vérif. 31 réponses. (R9) Prix de la chambre la moins chère située dans un hôtel trois étoile d une station balnéaire? Vérif. 65 euros. 3

TP base de données SQLite : solutions des requêtes (R1) Liste des numéros et noms des stations de montagne avec leur capacité en chambres. En SQL : SELECT ns, noms, capch FROM resorts WHERE types= montagne (R2) Liste des noms des hôtels trois étoiles et quatre étoiles avec leur numéro de station. On n utilise que la base hotels. En SQL : SELECT nomh,ns, FROM hotels WHERE cath=3 OR cath=4 (R3) Liste des noms des hôtels avec leur adresse, tél., catégorie, se trouvant dans une station balnéaire. Code SQL correspondant : SELECT h.nomh,h.adrh,h.telh,h.cath FROM resorts r, hotels h WHERE r.ns=h.ns AND r.types= mer Variante avec la commande JOIN : SELECT h.nomh,h.adrh,h.telh,h.cath FROM resorts r JOIN hotels h ON r.ns=h.ns WHERE r.types= mer (R4) Liste des noms des stations au bord de la mer ayant des hôtels 4 étoiles. Code SQL correspondant : SELECT r.noms FROM resorts r, hotels h WHERE r.ns=h.ns AND r.types= mer AND cath=4 Mais pour éviter les doublons, on a besoin de : SELECT DISTINCT r.noms FROM resorts r, hotels h WHERE r.ns=h.ns AND r.types= mer AND cath=4 (R5) Liste des noms et adresses des clients dont l adresse est un hôtel. En SQL : SELECT DISTINCT g.nomcl, g.adrcl FROM Guests g, Hotels h WHERE g.adrcl=h.adrh (R6) Liste des noms et adresses des clients ayant réservé à la montagne. Code SQL : SELECT DISTINCT g.nomcl,g.adrcl FROM resorts r, bookings b, guests g WHERE r.ns=b.ns AND g.ncl=b.ncl AND r.types= montagne 1

TD base de données : requêtes en algèbre relationnelle (R1) Liste des numéros et noms des stations de montagne avec leur capacité en chambres. En algèbre relationnelle : π ns,noms,capch (σ types= montagne (resorts)). (R2) Liste des noms des hôtels trois étoiles et quatre étoiles avec leur numéro de station. On n utilise que la base hotels. Seulement il faut faire la REUNION de deux sélections. En algèbre relationnelle : π nomh,ns (σ cath=3 (hotels) σ cath=4 (hotels)). (R3) Liste des noms des hôtels avec leur adresse, tél., catégorie, se trouvant dans une station balnéaire. Première étape : On doit d abord à partir de la table resorts sélectionner les stations balnéaires c est à dire considérer σ types=mer (resorts). Deuxième étape : On doit créer une table à partir des tables hotels et resorts car le type de la station n apparaît pas dans hotels : ce qui relie les deux tables est l attribut ns (nom station). On considère donc la jointure hotels hotels.ns=resorts.ns (σ types=mer (resorts)) Troisième étape : on la projette sur les attributs demandés. Au total, le résultat en terme d algèbre relationnelle s écrit : π nomh,adrh,telh,cath (hotels hotels.ns=resorts.ns (σ types=mer (resorts))) (R4) Liste des noms des stations au bord de la mer ayant des hôtels 4 étoiles. On doit d un côté fabriquer la table des hôtels 4 étoiles : par sélection à partir de hotels De l autre côte fabriquer la table des stations au bord de la mer par sélection à partir de resorts On doit enfin faire la jointure de ces deux tables à partir de l égalité des numéros des stations. (R5) Liste des noms et adresses des clients dont l adresse est un hôtel. Encore une jointure :GUESTS guests.adrcl=hotels.adrh HOTELS Et l on projette avec π NomCl, AdrCl. (R6) Liste des noms et adresses des clients ayant réservé à la montagne. L énoncé mêle les mots clients, réservé, montagne ce qui fait naturellement intervenir les trois tables Guests, Bookings, Resorts. D abord : - Jointure entre la table bookings et la sélection de la table resorts pour avoir les réservation à la montagne via le ns. Autrement dit : σ types=montagne (resorts) resorts.ns=bookings.ns bookings -Puis, jointure entre cette table et la table client : via ncl. La formule finale est : π nomcl,adrcl (σ types=montagne (resorts) resorts.ns=bookings.ns bookings bookings.ncl=guests.ncl guests). 2

Suite TP base de données SQLite : encore des requêtes Solutions des dernières requêtes (R8) et (R9) (R8) Liste des hôtels avec leur numéro, numéro de station, nom, adresse, dont toutes les chambres ont un prix inférieur à 40 euros. Vérif. 31 réponses. Une solution avec un HAVING : SELECT h.ns, h.nh, h.nomh, h.adrh FROM Hotels h, Rooms r WHERE h.ns=r.ns AND h.nh=r.nh GROUP BY h.ns, h.nh, h.nomh, h.adrh HAVING MAX(r.prix)<40 Sans utiliser d opérateur d agrégation comme le MAX, on peut écrire une requête, qui, en algèbre relationnelle s écrirait ainsi : π ns,nh,adrh,cath (Hotels) hotels1.ns=hotels2.ns hotels1.ns=hotels2.nh (π ns,nh (hotels) π ns,nh (σ prix>40 (Rooms))). Commentaires : la raison d être de la différence ensembliste : en sélection dans Rooms les chambres dont le prix est supérieur à 40 euros et on projetant, on a la liste des numéros des hôtels ayant au moins une chambre dont le prix est supérieur à 40 euros. En prenant le complémentaire, on a la liste des numéros des hôtels dont toutes les chambres ont un prix inférieur à 40 euros. on peut ne pas marquer les conditions de jointure : la jointure sur fait sur la clé primaire des deux tables, c est plus lisible! (R9) Prix de la chambre la moins chère située dans un hôtel trois étoile d une station balnéaire? SELECT MIN(ro.prix) AS prix FROM Resorts re, Hotels h, Rooms ro WHERE re.ns=h.ns AND h.ns=ro.ns AND h.nh=ro.nh AND h.cath=3 AND re.types= mer Algèbre relationnelle : En trichant un peu, et en écrivant la comparaison dans la condition de jointure... cela a l air d être admis, on obtient : En posant -CH1=π ns,nh,nch,prix (σ cath=3 types= mer (resorts hotels rooms) -CH2=π ns,nh,nch,prix (σ cath=3 types= mer (resorts hotels rooms) OUI c est la même table! On peut alors écrire la requête : π prix (CH1) (π CH1.prix (CH1 CH1.prix>CH2.prix (CH2). Travail à faire : Ecrire les réponses en SQL et Algèbre relationnelle Nouvelles requêtes : (R10) Obtenir la liste des hôtels 4 étoiles n ayant que des chambres avec salles de bain. Vérif. 11 réponses. (R11) Listes des hôtels avec leur nom, adresse, et catégorie et leur nombre de réservations dans l année Vérif. 78 réponses, c est facile à savoir mais : Attention : un hôtel n a pas de réservation, il faut le faire néanmoins apparaître dans la liste : ce qui demande un traitement de cas d exceptions. 3

N.B. En SQL, on utilisera un COUNT. En algèbre relationnelle la fonction f= somme. Pour ce qui suit : SQL seulement (R12) Nom et adresse de l hôtel de la station Chamonix ayant eu le plus de réservations dans l année. Indication On pourra utiliser les opérateurs MAX et COUNT. Vérification On trouvera l Hôtel de la Gentiane. (R13) Jour de l année où l hôtel Bon séjour de la station Chamonix a eu le plus de réservations. Vérification On trouvera deux jours : le jour 99 et le jour 100. (R14) Noms des clients ayant réservé dans tous les hôtels 2 étoiles de la station Chamonix. Vérifications 5 réponses. 4