Stage Liesse Ensimag 2013

Documents pareils
1 Introduction et installation

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

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

CREATION WEB DYNAMIQUE

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

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

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Pratique et administration des systèmes

Bases de données relationnelles

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

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

Langage SQL : créer et interroger une base

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

Les bases de données

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

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

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

Le Langage SQL version Oracle

Cours Base de données relationnelles. M. Boughanem, IUP STRI

I4 : Bases de Données

Dossier I Découverte de Base d Open Office

Olivier Mondet

SQL Historique

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

Information utiles. webpage : Google+ : digiusto/

1. Base de données SQLite

Pour les débutants. langage de définition des données

Bases de données cours 1

OpenPaaS Le réseau social d'entreprise

Le langage SQL Rappels

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Bases de données relationnelles & SQL

Vincent Augusto

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

Bases de données élémentaires Maude Manouvrier

Présentation du module Base de données spatio-temporelles

Les BASES de DONNEES dans WampServer

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

Le Langage De Description De Données(LDD)

Création et Gestion des tables

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

Objectifs du TP : Initiation à Access

Mysql avec EasyPhp. 1 er mars 2006

Application web de gestion de comptes en banques

1/ Présentation de SQL Server :

Rappel sur les bases de données

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

16H Cours / 18H TD / 20H TP

A QUOI SERVENT LES BASES DE DONNÉES?

Cours Bases de données

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

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Bases de données et sites WEB

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

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

ESPACE COLLABORATIF SHAREPOINT

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

Introduction aux Bases de Données

Bases de Données. Plan

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Installation et Mise en œuvre de MySQL

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

Guide d installation de MySQL

Introduction aux SGBDR

Configuration de plusieurs serveurs en Load Balancing

Stockage du fichier dans une table mysql:

Bases de données Cours 1 : Généralités sur les bases de données

PHP 4 PARTIE : BASE DE DONNEES

Bases de Données Avancées

I. MySQL : Serveur et SGBD

Introduction à MySQL (ou MySQL en 3 heures montre en main)

WDpStats Procédure d installation

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

TP Contraintes - Triggers

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

SQL MAP. Etude d un logiciel SQL Injection

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

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

Installation d'un serveur FTP géré par une base de données MySQL

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

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

PROJET 1 : BASE DE DONNÉES REPARTIES

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

Création de Sous-Formulaires

Raja Bases de données distribuées A Lire - Tutoriel

Gestion des références bibliographiques. Comment simplifier la gestion des références bibliographiques?

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Modélisation et Gestion des bases de données avec mysql workbench

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)

Bases de données Outils de gestion

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

Encryptions, compression et partitionnement des données

Cours: Administration d'une Base de Données

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

MODE OPERATOIRE OPENOFFICE BASE

Transcription:

Stage Liesse Ensimag 2013 Introduction aux Systèmes de Gestion de Bases de Données Sylvain Bouveret & Noha Ibrahim prénom.nom@grenoble-inp.fr 24 octobre 2013

1 Première partie Introduction aux SGBD 1. Qu est-ce qu un Système de Gestion de Bases de Données? 2. À propos de modèles de données 3. Les SGBD en pratique...

Pourquoi des SGBD? Système de Gestion de Bases de Données (SGBD) : système permettant de stocker et d accéder à de l information. Un simple ensemble de fichiers en fait? Élèves Enseignants Cours Notes Filières Pas tout-à-fait... 3 / 90

Problèmes de stockage de l information Accès aux données : 1. Accès complexe à une information disparate et potentiellement stockée à plusieurs endroits. besoin d un mécanisme d interrogation complexe 2. Accès inefficace si quantité de données conséquente besoin d un accès optimisé aux données 3. Données potentiellement sensibles (en terme de sécurité) besoin de mécanismes de contrôle d accès 4 / 90

Problèmes de stockage de l information Cohérence de l information : 4. Pas de vérification de la cohérence de l information entrée dans la base Expression et de vérification de contraintes nécessaire 5. Information potentiellement redondante risque d incohérence redondance subie redondance contrôlée (sauvegarde) 6. Accès concurrents de plusieurs utilisateurs problèmes de cohérence besoin de mécanismes de gestion des accès concurrents 7. Panne pendant une mise-à-jour massive? besoin de garantir l atomicité des mises-à-jour 5 / 90

Problèmes de stockage de l information 8. Stockage des données (fichiers, format) : influe sur leur interrogation. besoin d assurer l indépendance physique des données 9. Différents types d utilisateurs différents points de vue sur les données. besoin d assurer l indépendance logique des données Vue externe 1 Vue externe 2... Vue externe n Schéma conceptuel Schéma physique... 6 / 90

SGBD, modèle de données Système de Gestion de Bases de Données Un SGBD est un système de stockage de données, qui permet de résoudre tous ces problèmes. Tout SGBD s appuie sur un modèle de données, permettant de représenter en mémoire des données du monde réel. 7 / 90

Modèle de données Modèle = représentation formelle abstraite (simplifiée) de la réalité. Modèle de données = représentation formelle abstraite des données du monde réel à manipuler. Permet de décrire : 1. la structure des données (types d objets, relations entre ces types, etc.) Exemple : «un étudiant est un objet qui possède un numéro INSEE, un nom, un prénom, une adresse...» 2. les occurrences des données Exemple : «Dark Vador est un étudiant possédant le numéro INSEE 1770901142555, le nom Vador, le prénom Dark, l adresse vador@imag.fr» 8 / 90

Le modèle relationnel Plusieurs modèles de données existent (hiérarchique, réseau, etc.). Aujourd hui, nous nous focaliserons uniquement sur le modèle relationnel développé par Codd en 1970 très simple conceptuellement (tableaux 2D) très puissant grâce à l Algèbre Relationnelle modèle sur lequel s appuie la norme SQL2, standard encore à l heure actuelle 9 / 90

Introduction aux SGBD Qu est-ce qu un Système de Gestion de Bases de Données? À propos de modèles de données Les SGBD en pratique... 10 / 90

Les SGBD en pratique Utilisateur Client SGBD Requête (SQL) Résultat (table) BD SGBD Concrètement, pour utiliser une base de données : On lance un client On fournit les identifiants de connexion : nom de la base, localisation (serveur), nom d utilisateur, mot de passe Une fois connecté, on envoie des requêtes et on récupère le résultat 11 / 90

Client SGBD console Exemple, avec un client PostgreSQL en ligne de commande : [sylvain@msnordlys]~ $ psql -U sylvain -d mabase -h monserveur Password for user sylvain: ******** psql (9.1.8) Type "help" for help. mabase=# SELECT name, place, ST_XMin(way), ST_YMin(way) mabase-# FROM planet_osm_point WHERE name= Grenoble AND place= city ; name place st_xmin st_ymin ----------+-------+------------------+------------------ Grenoble city 638583.190179611 5650917.09875511 (1 row) 12 / 90

Client SGBD graphique Je n aime pas la console... Suis-je condamné à l utiliser quand même? Non... La plupart des SGBD ont des clients graphiques permettant d administrer et d interroger des bases Exemple : SQLite Manager, pour le SGBD SQLite. 13 / 90

Un SGBD chez moi... Concrètement, comment fait-on pour installer un SGBD? La plupart des SGBD fonctionnent sur le mode classique client-serveur. C est le cas par exemple pour : PostgreSQL (libre) ; MySQL (libre ou propriétaire) fourni par exemple dans la suite WAMP (Windows, Apache, MySQL, PHP) ou LAMP (Linux...) fournissant un serveur Web PHP + BD clef en main. Oracle (propriétaire)... Pour ces SGBD, il faut : installer la partie «serveur» du SGBD démarrer le serveur utiliser le client fourni, ou en trouver un qui nous convient. 14 / 90

Le cas particulier SQLite Aujourd hui, nous allons utiliser SQLite qui a des caractéristiques particulières : Pas de serveur, juste un client Chaque base de données est juste un fichier pour se connecter, on spécifie juste le nom du fichier [sylvain@msnordlys]~ $ sqlite3 hotels.sqlite SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> SELECT * FROM resorts WHERE noms LIKE P% ; 3 Palavas-les-Flots mer 345 9 Peyragudes montagne 252 15 / 90

SQLite : discussion Avantages : Très léger Installation très facile, et administration inexistante Chaque base peut être distribuée très facilement (c est un fichier) Domaine public utilisable partout sans restriction légale Inconvénients : Ne convient pas à la gestion de gros volumes de données Certaines fonctionnalités d interrogation manquantes Pas de gestion des utilisateurs, contrôle d accès, etc. En résumé : suffisant pour de petites bases «embarquées» mais pas réaliste sur une application nécessitant des fonctionnalités avancées et de gros volumes de données. 16 / 90

SQLite Manager Aujourd hui, nous utiliserons l interface SQLite Manager, qui est une extension du navigateur Firefox. Pour la lancer : 1. Lancer le navigateur Firefox 2. Allez dans le menu Outils, et cliquez sur SQLite Manager Pour créer une nouvelle base, c est dans le menu Base de données Nouvelle base de données Pour ouvrir une base existante, c est dans le menu Base de données Connecter la base de données 17 / 90

Le programme de la journée 1. D abord (surtout) de la théorie : 1.1 Le modèle relationnel 1.2 L algèbre relationnelle 2. Ensuite (surtout) de la pratique : 2.1 interrogation avec SQL 2.2 interface SQL - Python : construction d une petite application 18 / 90

2 Deuxième partie Le modèle relationnel 4. Les bases du modèle relationnel 5. Contraintes d intégrité 6. Base, schéma 7. Passage à la pratique avec SQLite

Relation Notion centrale du modèle relationnel : la relation... R att 1 : D 1... att j : D j... att n : D n t 1,1... t 1,j... t 1,n............... t i,1... t i,j... t i,n............... t m,1... t m,j... t m,n 20 / 90

Relation : détails R att 1 : D 1... att j : D j... att n : D n t 1,1... t 1,j... t 1,n............... t i,1... t i,j... t i,n............... t m,1... t m,j... t m,n 21 / 90

Relation : détails R att 1 : D 1... att j : D j... att n : D n schéma de relation t 1,1... t 1,j... t 1,n............... t i,1... t i,j... t i,n............... t m,1... t m,j... t m,n Schéma = intension de la relation (définition abstraite) R = nom de la relation (et du schéma) n = arité de la relation (relation n-aire) 21 / 90

Relation : détails R att 1 : D 1... att j : D j... att n : D n t 1,1... t 1,j... t 1,n............... t i,1... t i,j... t i,n tuple (ligne)............... t m,1... t m,j... t m,n Ensemble des tuples = extension de la relation (données) Une relation est un ensemble de tuples. Conséquences : lignes non ordonnées pas de doublons (tuples tous différents) m = cardinal de la relation (= nombre de tuples) 21 / 90

Relation : détails R att 1 : D 1... att j : D j... att n : D n t 1,1... t 1,j... t 1,n............... t i,1... t i,j... t i,n............... t m,1... t m,j... t m,n attribut (colonne) att j : D j = nom et domaine d attribut (intension) {t 1,j,..., t m,j } = projection de R sur l attribut att j (extension) Attributs nommés, mais ordre des colonnes sans importance 21 / 90

Exemple Élèves 1 prénom nom e-mail filière Luke Skywalker skywalker@imag.fr MMIS Dark Vador vador@imag.fr IF Han Solo solo@falcon.com IF Leia Solo princess@falcon.com MMIS Jabba The Hut jabba@imag.fr TELECOM dont le schéma est... Élèves 1 : {prénom : String, nom : String, e-mail : String, filière :{MMIS, IF, TELECOM, SLE, ISI}}. (Remarque : pour simplifier on peut omettre le domaine des attributs) 22 / 90

Le modèle relationnel Les bases du modèle relationnel Contraintes d intégrité Base, schéma Passage à la pratique avec SQLite 23 / 90

Contraintes d intégrité Dans le modèle relationnel, le concepteur de la base de données peut définir des contraintes que doivent respecter les données La définition d une contrainte se fait sur le schéma des tables (intension). Ce sont les données (les tuples, l extension) qui doivent se conformer aux contraintes Trois types de contraintes : clef primaire ; référence (clef étrangère) ; valeur ou domaine. 24 / 90

Contrainte de clef primaire Définition : un sous-ensemble {att 1,..., att k } d attributs d un schéma de relation R. Sémantique formelle : pour tout (t 1, t 2) R, si t 1 et t 2 coïncident sur {att 1,..., att k } alors t 1 = t 2. on dit que {att 1,..., att k } est une clef de R. Sémantique informelle : imposer un identifiant à chaque relation. 25 / 90

Contrainte de clef primaire : exemple Élèves 1 : {prénom, nom, e-mail, filière} Élèves 1 prénom nom e-mail filière Dark Vador vador@imag.fr IF Obi-Wan Kenobi kenobio@imag.fr MMIS Han Solo solo@falcon.com IF Dark Vador vador@blackstar.com IF viole la contrainte de clef primaire! 26 / 90

Contraintes de référence Élèves 1 prénom nom e-mail filière Dark Vador vador@imag.fr IF Obi-Wan Kenobi kenobio@imag.fr MMIS Han Solo solo@falcon.com IF Notes cours prénom nom note sport Dark Vador 20 sport Jabba The Hut 3 pilotage Han Solo 15 Comment imposer le fait que tout élève apparaissant dans la table Notes apparaisse aussi dans la table Élèves? Contrainte de référence 27 / 90

Contraintes de référence Définition : une correspondance entre des attributs {att 1,..., att k } d un schéma R et des attributs {att 1,..., att k} d un autre schéma R. Exemple : Notes(prénom, nom) référence Élèves(prénom, nom) Sémantique formelle : 1. Pour tout tuple t R, il existe un tuple t R tel que t[att 1,..., att k ] = t [att 1,..., att k ]. 2. {att 1,..., att k } est une clef de R Sémantique informelle : tout «objet» de R doit correspondre à un «objet» existant de R. 28 / 90

Contraintes de valeur / domaine Définition : une condition booléenne sur les attributs d une relation. Exemple : note 0 et note 20. Sémantique : tous les tuples de la relation doivent vérifier la condition booléenne. 29 / 90

Le modèle relationnel Les bases du modèle relationnel Contraintes d intégrité Base, schéma Passage à la pratique avec SQLite 30 / 90

Base de données relationnelle Schéma de base de données relationnelle Un ensemble de schémas de relations Une contrainte de clef primaire par schéma de relation Un ensemble de contraintes de clefs étrangères Un ensemble de contraintes de valeurs Base de données relationnelle Un schéma de bases de données relationnelle Des tuples pour peupler ce schéma, vérifiant toutes les contraintes d intégrité. 31 / 90

Le modèle relationnel Les bases du modèle relationnel Contraintes d intégrité Base, schéma Passage à la pratique avec SQLite 32 / 90

À propos de SQL Structured Query Language (SQL2) est un langage déclaratif (décrit le quoi sans se préoccuper du comment) Comprend (entre autres) : un langage de description de données (définition du schéma) un langage de manipulation de données (insertion / suppression / mise-à-jour de données, interrogation) Fondé sur le modèle et l algèbre relationnels mais introduit des opérateurs supplémentaires Objets manipulés : tables ( relations), colonnes ( attributs) et lignes (tuples) Contrairement à l algèbre relationnelle, la sémantique est celle des multi-ensembles (optimisation de requêtes) doublons autorisés dans les tables. 33 / 90

Création de tables en SQL Un exemple : 1 CREATE TABLE Notes ( 2 nom VARCHAR (80), 3 pré nom VARCHAR (80), 4 cours VARCHAR (80), 5 note INT 6 ); -- Cr ée une table Notes à 4 attributs Quelques types de données (pour les attributs) : CHAR(n), VARCHAR(n) chaînes de caractères de longueur fixe ou variable INT ou INTEGER entiers FLOAT «réels» (flottants) DATE, TIME, TIMESTAMP estampilles temporelles 34 / 90

Contraintes Clefs primaires : PRIMARY KEY(...) [Note : une seule par table!] Références (clefs étrangères) : FOREIGN KEY(...)REFERENCES R(...) Exemple : 1 CREATE TABLE Notes ( 2 nom VARCHAR (80), 3 pré nom VARCHAR (80), 4 cours VARCHAR (80), 5 note INT, 6 PRIMARY KEY( nom, prénom, cours ), 7 FOREIGN KEY( nom, pré nom ) REFERENCES 8 Élè ves (nom, prénom ), 9 FOREIGN KEY( cours ) REFERENCES Cours ( intitul é) 10 ); 35 / 90

Compléments Contraintes de valeur : CHECK condition Exemple : 1 CREATE TABLE Notes ( 2... -- le reste de la dé claration pr écé dente 3 CHECK ( note >= 0) AND ( note <= 20) 4 ); Destruction de table : 1 DROP TABLE R; -- Supprime la table R Remarque : Attention à l ordre des créations et destructions de tables si clefs étrangères. 36 / 90

Insertion et suppression de tuples en SQL Insertion de tuples : INSERT INTO... VALUES (...); Exemple : 1 INSERT INTO Notes 2 VALUES ( Vador, Dark, Sport, 20) ; Suppression de tuples : DELETE FROM... WHERE (...); Exemple : 1 DELETE FROM Notes 2 WHERE nom = Vador AND pré nom = Dark ; 3 -- supprime toutes les notes de Dark Vador 37 / 90

À vous de jouer... Nous allons passer un peu à la pratique. Objectifs : Prendre en main SQLite, et l interface SQLite Manager de Firefox Manipuler le langage de description de données SQL pour la création d une petite base très simple Insérer quelques données et illustrer le mécanisme de vérification de contraintes d intégrité du SGBD. 38 / 90

À vous de jouer... Création de tables 1. Ouvrez l interface SQLite Manager et créez une nouvelle base de données 2. Cliquez sur l onglet Exécuter le SQL : il vous propose un champ de texte pour entrer vos requêtes SQL et un bouton pour les exécuter. 3. Écrivez les requêtes correspondant à la création du schéma suivant, exécutez-les, et vérifiez dans le panneau latéral que les tables sont bien créées. Artistes : {nom, nationalité} Disques : {titre, artiste, année, style} ; artiste référence Artistes(nom) Pistes : {titredisque, artistedisque, numéropiste, titrepiste} ; (titredisque, artistedisque) référence Disques(titre, artiste) 39 / 90

À vous de jouer... Insertion de données 1. Insérez un artiste de votre choix (disons A ) avec sa nationalité dans la table Artistes. 2. Cliquez sur l onglet Parcourir & Rechercher pour vérifier s il a bien été inséré dans la table. 3. Renouvelez la même opération avec le même artiste, mais une nationalité différente. Que se passe-t-il? 40 / 90

À vous de jouer... Insertion de données 1. Activez le support des clefs étrangères en exécutant la requête SQL suivante : PRAGMA foreign_keys = ON;. 2. Insérez dans la table Disques un disque de votre choix de l artiste A. 3. Cliquez sur l onglet Parcourir & Rechercher pour vérifier s il a bien été inséré dans la table. 4. Renouvelez la même opération avec un artiste qui n existe pas dans la relation Artistes. Que se passe-t-il? 5. Essayez de supprimer dans la table Artistes l artiste A. Que se passe-t-il? 41 / 90

3 Troisième partie L algèbre relationnelle 8. Introduction à l algèbre relationnelle 9. Projection, sélection 10. Opérateurs ensemblistes 11. Produit, jointure, division

Des opérateurs pour le modèle relationnel Algèbre relationnelle : une algèbre au sens large (mathématique) du terme... un ensemble : l ensemble R des relations des opérateurs : des lois internes sur les relations : Opérateurs unaires (f : R R) : projection, sélection Opérateurs binaires (f : R R R) : union, intersection, différence, produit, jointure, division. 43 / 90

Projection Notation : π att1,...,att n (R) R une relation ; att 1,..., att n un sous-ensemble d attributs de R. Résultat : La projection d une relation sur un ensemble d attributs ne garde que les colonnes correspondant à ces attributs. 44 / 90

Projection : exemple Projection sur l attribut nom de la relation Élèves... Élèves prénom nom e-mail filière Luke Skywalker skywalker@imag.fr MMIS Dark Vador vador@imag.fr IF Han Solo solo@falcon.com IF Leia Solo princess@falcon.com MMIS Jabba The Hut jabba@imag.fr TELECOM π nom(élèves) nom Skywalker Vador Solo The Hut 45 / 90

Sélection Notation : σ P (R) R une relation ; P une condition booléenne (un critère) sur les attributs de R. Résultat : La sélection d une relation selon un critère ne garde que les tuples satisfaisant ce critère. 46 / 90

Sélection : exemple Sélection dans la relation Notes des tuples dont la note est inférieure à 10. Notes cours prénom nom note sport Dark Vador 20 sport Jabba The Hut 3 pilotage Han Solo 15 σ note<10(notes) cours prénom nom note sport Jabba The Hut 3 47 / 90

Passage à la pratique (R1) Liste des numéros et noms des stations de montagne avec leur capacité en chambres. À vous de jouer... 48 / 90

Opérateurs ensemblistes Notation : R 1 R 2 ; R 1 R 2 ; R 1 R 2 R 1 et R 2 deux relations de même schéma. Résultat : Union : tous les tuples contenus dans R 1 ou R 2 Intersection : tous les tuples contenus dans R 1 et R 2 Différence : tous les tuples contenus dans R 1 mais pas dans R 2 49 / 90

Différence : exemple Différence entre Élèves 1 et Élèves 2... Élèves 1 prénom nom e-mail filière Luke Skywalker skywalker@imag.fr MMIS Dark Vador vador@imag.fr IF Han Solo solo@falcon.com IF Leia Solo princess@falcon.com MMIS Élèves 2 prénom nom e-mail filière Dark Vador vador@imag.fr IF Obi-Wan Kenobi kenobio@imag.fr MMIS Élèves 1 Élèves 2 prénom nom e-mail filière Luke Skywalker skywalker@imag.fr MMIS Han Solo solo@falcon.com IF Leia Solo princess@falcon.com MMIS 50 / 90

Passage à la pratique (R8) Liste des hôtels 4 étoiles n ayant que des chambres avec salle de bain. À vous de jouer... 51 / 90

Produit cartésien Notation : R 1 R 2 R 1 et R 2 deux relations (de schémas quelconques). Résultat : Toutes les combinaisons possibles (t 1, t 2) de tuples t 1 R 1 et t 2 R 2. 52 / 90

Produit cartésien : exemple Élèves 2 prénom nom e-mail filière Dark Vador vador@imag.fr IF Obi-Wan Kenobi kenobio@imag.fr MMIS Notes cours prénom nom note sport Dark Vador 20 sport Jabba The Hut 3 pilotage Han Solo 15 R Él2.pré Él2.nom e-mail filière cours N.pré N.nom note Dark Vador va[...]fr IF sport Dark Vador 20 Dark Vador va[...]fr IF sport Jabba The Hut 3 Dark Vador va[...]fr IF pilotage Han Solo 15 Obi-Wan Kenobi ke[...]fr MMIS sport Dark Vador 20 Obi-Wan Kenobi ke[...]fr MMIS sport Jabba The Hut 3 Obi-Wan Kenobi ke[...]fr MMIS pilotage Han Solo 15 53 / 90

Produit cartésien : remarques Produit possible entre tables ayant des attributs communs (de mêmes noms) Auto-produit (R R) possible aussi (usage : renommer les attributs pour éviter la confusion). 54 / 90

Jointure conditionnelle Notation : R 1 P R 2 R 1 et R 2 deux relations (de schémas quelconques). P une condition booléenne (un critère) sur les attributs de R 1 et R 2. Résultat : Complètement équivalent à un produit cartésien suivi d une sélection : R 1 P R 2 = σ P (R 1 R 2). 55 / 90

Jointure naturelle Notation : R 1 R 2 R 1 et R 2 deux relations ayant des attributs en commun (de même nom). Résultat : Toutes les combinaisons possibles (t 1, t 2) de tuples t 1 R 1 et t 2 R 2 pour lesquelles t 1 et t 2 ont les mêmes valeurs sur les attributs communs. Les colonnes correspondant à ces attributs communs sont fusionnées dans la relation résultante. 56 / 90

Jointure naturelle : exemple Jointure entre Élèves 2 et Notes : informellement, liste des élèves (avec leurs données) et leurs notes. Élèves 2 prénom nom e-mail filière Dark Vador vador@imag.fr IF Obi-Wan Kenobi kenobio@imag.fr MMIS Notes cours prénom nom note sport Dark Vador 20 sport Jabba The Hut 3 pilotage Han Solo 15 Él 2 Notes prénom nom e-mail filière cours note Dark Vador vador@imag.fr IF sport 20 57 / 90

Passage à la pratique (R3) Liste des noms des stations au bord de la mer ayant des hôtels 4 étoiles. À vous de jouer... 58 / 90

Passage à la pratique (R4) Noms et adresses des clients ayant réservé à la montagne. À vous de jouer... 59 / 90

Passage à la pratique (R7) Noms des clients dont l adresse est l adresse d un hôtel. À vous de jouer... 60 / 90

Pour aller plus loin... La division Notation : R 1 R 2 R 1 et R 2 deux relations telles que l ensemble des attributs de R 2 est inclus dans l ensemble des attributs de R 1. Att 2 : ensemble des attributs de R 2 Att 1 = Att 2 Att 3 : ensemble des attributs de R 1 Résultat : Tous les tuples t 3 sur Att 3 tels que : pour chaque tuple t 2 R 2 (sur Att 2), le tuple (t 2, t 3) (sur Att 1) existe dans R 1. 61 / 90

Division : exemple Élèves 3 nom filière Skywalker Vador Solo Solo The Hut MMIS IF IF MMIS TELECOM R 2 filière MMIS IF Informellement : trouver tous les noms d élèves qui apparaissent à la fois dans la filière MMIS et dans la filière IF. Élèves 3 R 2 nom Solo 62 / 90

Passage à la pratique (R15) Nom des clients ayant réservé dans tous les hôtels 2 étoiles de la station «Chamonix». À vous de jouer... 63 / 90

À vous de jouer... À vous de jouer sur les 10 requêtes restantes (NB : certaines ne sont pas exprimables en algèbre relationnelle) 64 / 90

4 Quatrième partie Structured Query Language 12. Introduction 13. Le bloc de qualification et les opérateurs de base 14. Utilisation de sous-requêtes 15. Regroupements et Agrégations

Avant de commencer... Dans cette partie, nous allons écrire des requêtes d interrogation sur une base préexistante. Avant de commencer : 1. Téléchargez l archive TP-SGBD.zip sur la page Wiki du stage. 2. Décompressez l archive dans votre répertoire personnel. 3. Dans l interface SQLite Manager, allez dans Base de données Connecter la base de données pour ouvrir une base de données existante. 4. Allez dans le dossier data puis sélectionnez le fichier hotels.sqlite. 5. Vérifiez que la base est bien ouverte : elle devrait contenir 5 tables, affichées dans le panneau de gauche. 66 / 90

SELECT FROM WHERE Notes : {prénom, nom, cours, note, filière} Un exemple : 1 SELECT nom, notes 2 FROM Notes ; -- sé lectionne les noms des élè ves ainsi que leur notes 1 SELECT nom, notes 2 FROM Notes 3 WHERE notes >= 10; -- sé lectionne que les élè ves qui ont une note au dessus de 10 67 / 90

Passage à la pratique (R1) Liste des numéros et noms des stations de montagne avec leur capacité en chambres. À vous de jouer... 68 / 90

Passage à la pratique (R3) Liste des noms des stations au bord de la mer ayant des hôtels 4 étoiles. À vous de jouer... 69 / 90

Passage à la pratique (R4) Noms et adresses des clients ayant réservé à la montagne. À vous de jouer... 70 / 90

SOUS REQUÊTES Notes : {prénom, nom, cours, note, filière} Élèves : {prénom, nom, e-mail, Un exemple : 1 SELECT nom 2 FROM Élè ves filière} 3 Where nom IN ( SELECT nom from Notes ); -- sé lectionne les noms des élè ves qui ont une note 1 SELECT nom 2 FROM Élè ves e 3 Where EXISTS ( SELECT * from Notes n Where e. nom = n. nom ); -- sé lectionne les noms des élè ves qui ont une note 71 / 90

Passage à la pratique (R8) Liste des hôtels 4 étoiles n ayant que des chambres avec salle de bain. À vous de jouer... 72 / 90

GROUP BY Notes : {prénom, nom, cours, note, filière} Un exemple : 1 SELECT prénom, nom, AVG( notes ) 2 FROM Notes 3 GROUP BY prénom, nom ; -- calcule la moyenne des notes de tous les cours pour chaque élè ve 73 / 90

GROUP BY... HAVING Notes : {prénom, nom, cours, note, filière} Un exemple : 1 SELECT prénom, nom, AVG( notes ) 2 FROM Notes 3 GROUP BY prénom, nom 4 HAVING AVG( notes ) > 10; -- garde les élè ves qui ont une moyenne sup é rieure à 10 74 / 90

Passage à la pratique (R10) Liste des hôtels avec leur nom et adresse, et leur nombre de réservations dans l année. À vous de jouer... 75 / 90

Passage à la pratique (R13) Liste des hôtels, avec leur nom, adresse et catégorie, dont toutes les chambres ont un prix inférieur à 40 euros. À vous de jouer... 76 / 90

Passage à la pratique (R15) Nom des clients ayant réservé dans tous les hôtels 2 étoiles de la station «Chamonix». À vous de jouer... 77 / 90

5 Cinquième partie Utilisation d une BD dans une application 16. Les bases de données dans la vraie vie 17. Passage à la pratique : Python

Architecture n-tiers Voici (approximativement) ce que l on a fait jusqu à présent : Requête (SQL) Vous Résultat (table) SGBD 79 / 90

Architecture n-tiers Dans la vraie vie, l utilisateur final n accède jamais directement au SGBD (qui a déjà écrit une requête SQL pour réserver un billet de train?) En pratique, c est donc plutôt ça : Vous Interaction HM Affichage des résultats Application Requête (SQL) Résultat (table) SGBD Et même plutôt ça : Vous Client Web (e.g Firefox) Requête HTTP Réponse HTTP Serveur Web SQL table SGBD 80 / 90

Accéder à un SGBD depuis un programme Schéma classique d accès à un SGBD à partir d un langage de programmation quelconque : 1. Récupérer une connexion à la base 2. Exécuter une (ou des) requête(s) en utilisant cette connexion 3. Récupérer le résultat des requêtes (et le traiter) 4. Fermer la connexion La plupart des SGBD possèdent des pilotes d accès (ou modules) pour la plupart des langages. Exemple : pour une application développée en Python et le SGBD SQLite3 : import sqlite3 81 / 90

Accéder à SQLite3 avec Python 1. Récupérer une connexion à la base 1 connex = sqlite3. connect (../ data / hotels. sqlite ) 2. Exécuter une (ou des) requête(s) en utilisant cette connexion 1 cursor = connex. cursor () 2 req = SELECT cours, note FROM Notes WHERE prenom =\ + pre + \ AND nom =\ + nom + \ ; 3 cursor. execute ( req ) 3. Récupérer le résultat des requêtes (et le traiter) 1 data = cursor. fetchall () 2 for r in data : 3 print r 4. Fermer la connexion 1 connex. close () 82 / 90

Construction de requête, remarque Remarque : Dans la pratique, ce n est pas une bonne idée de construire une requête directement par concaténation de chaîne dans un programme... Source : http://xkcd.com/327/ (licence CC-by-NC) La plupart des langages proposent des méthodes de construction de requêtes plus robustes, résistantes en particulier à l injection de code SQL. 83 / 90

À vous de jouer... Objectif : créer une petite application Python qui affiche la liste des hôtels pour une station donnée : d abord dans l interpréteur Python classique ; ensuite à l aide d une page Web affichée dans votre navigateur préféré (Firefox pour aujourd hui). Le dossier python de votre archive contient (entre autres) : un fichier dbhotels.py (à compléter), qui contient le code d accès à la base de données ; un fichier hotels.py, faisant appel à dbhotels.py, qui contient le code d affichage pour l application version «classique» ; un fichier HTTPServerHotels.py, faisant appel à dbhotels.py, qui contient le code du serveur chargé de la version «web» de l application. Le code d accès au SGBD (dbhotels.py) est commun aux deux applications. 84 / 90

Architecture de l application Python Application, version classique Vous Nom de station Affichage des résultats hotels.py dbhotels.py Requête (SQL) Résultat (table) SGBD Application, version Web Vous Client Web (e.g Firefox) Requête HTTP Réponse HTTP HTTPServerHotels.py dbhotels.py SQL table SGBD 85 / 90

Application, version «classique» 1. Ouvrez dans votre éditeur préféré le fichier dbhotels.py du dossier python de votre archive 2. Ce fichier contient la fonction définie par 1 def gethotelsbyresort ( resort ): Cette fonction interroge la base de données pour renvoyer la liste des hôtels pour la station resort. Complétez la ligne commençant par requete =... en mettant en partie droite une chaîne de caractère représentant la requête SQL adéquate. 3. Exécutez le fichier hotels.py du dossier python : il demande à l utilisateur le nom d une station et affiche tous les hôtels correspondant grâce à dbhotels.py. 86 / 90

Application, version «web» 1. Exécutez le fichier HTTPServerHotels.py grâce à votre interpréteur Python : il lance le serveur chargé de répondre aux requêtes HTTP. Laissez le programme lancé. 2. Ouvrez votre navigateur Firefox et tapez dans la barre d adresse : http://localhost:4242/ 3. Testez l application en tapant un nom de station dans la boîte prévue à cet effet. Et ça marche! 87 / 90

6 Sixième partie Conclusion

Conclusion Aujourd hui, nous avons vu (entre autres) : Côté théorique : Modèle relationnel Algèbre relationnelle Côté langage : SQL, description de données (création / destuctions de tables) SQL, manipulation de données (insertion / suppression de tuples) SQL, manipulation de données (interrogation) Côté technique : Qu est-ce qu un SGBD Utilisation de SQLite en pratique Architecture n-tiers (couplage SGBD / Python)...Il y aurait plein d autres choses à dire... Autres aspects de SQL (vues, contraintes d accès,...), formes normales de relation, dépendances fonctionnelles, entité association, optimisation de requêtes, relationnel-objet, bases de données réparties... 89 / 90

Merci de votre participation...