Modèle relationnel Langage de requêtes (2)



Documents pareils
Bases de données - Modèle relationnel

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

Langage SQL : créer et interroger une base

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

Le Langage SQL version Oracle

Le langage SQL Rappels

Les bases de données

OpenPaaS Le réseau social d'entreprise

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

1 Introduction et installation

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

INFORMATIQUECOMMUNE CPGE. Introduction aux Bases de Données Relationnelles

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

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

TP 8: LES OPERATEURS ENSEMBLISTES

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

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

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

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

Évaluation et optimisation de requêtes

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

TP Bases de données réparties

Olivier Mondet

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

Structure fonctionnelle d un SGBD

Cours SQL. Base du langage SQL et des bases de données

Optimisation SQL. Quelques règles de bases

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

Interpréteur d algèbre relationnelle

Systèmes de Gestion de Bases de Données

INTRODUCTION AU DATA MINING

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

Cours: Les Jointures 1

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

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

16H Cours / 18H TD / 20H TP

A QUOI SERVENT LES BASES DE DONNÉES?

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Introduction aux Bases de Données 2004/2005

I4 : Bases de Données

La rencontre du Big Data et du Cloud

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

Bases de données documentaires et distribuées Cours NFE04

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données élémentaires Maude Manouvrier

Création de Sous-Formulaires

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

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

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

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

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

PROJET 1 : BASE DE DONNÉES REPARTIES

Dossier I Découverte de Base d Open Office

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

Information utiles. webpage : Google+ : digiusto/

CREATION WEB DYNAMIQUE

Modélisation de bases de données : Le modèle relationnel

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Bases de données cours 1

FileMaker 13. Guide de référence SQL

Année Universitaire 2009/2010 Session 2 de Printemps

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

BD et XML : Exercices

Les BASES de DONNEES dans WampServer

Présentation du PL/SQL

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

UNIVERSITY OF MALTA FACULTY OF ARTS. French as Main Area in an ordinary Bachelor s Degree

Bases de données relationnelles

OLAP : Mondrian + Pentaho. Maguelonne Teisseire Hugo Alatrista Salas hugo.alatrista- salas@teledetec9on.fr Flavien Bouillot

Bases de Données Avancées

Vincent Augusto

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

UML et les Bases de Données

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

2 Serveurs OLAP et introduction au Data Mining

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

PHP 4 PARTIE : BASE DE DONNEES

Bases de données et sites WEB

Création et Gestion des tables

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

TP3 : Creation de tables 1 seance

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Afin de valider votre inscription merci de bien veiller à :

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Rappel sur les bases de données

Introduction à la B.I. Avec SQL Server 2008

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

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

SQL Historique

Modernisation et développement d applications IBM i Technologies, outils et nouveautés 2012/2013. Volubis.fr

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

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

Data Mining. Vincent Augusto École Nationale Supérieure des Mines de Saint-Étienne. Data Mining. V. Augusto.

Hala Skaf-Molli. Nancy-Université 14 mai 2007

Bases de données réparties: Fragmentation et allocation

Devoir Data WareHouse

8. Cours virtuel Enjeux nordiques / Online Class Northern Issues Formulaire de demande de bourse / Fellowship Application Form

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

Transcription:

Modèle relationnel Langage de requêtes (2) SITE : ENT ou http://www.univ-orleans.fr/lifo/members/mirian.halfeld BD - Mírian Halfeld-Ferrari p. 1/2

Besoin d augmenter le pouvoir d expression Algèbre SPJR (ou SPC): possibilité d écrire des requêtes conjonctives (très courantes). D autres requêtes existent: Lister les films de Almodovar ou de Sergio Leone Pouvons nous écrire cette requête avec SPJR (ou SPC)? BD - Mírian Halfeld-Ferrari p. 2/2

Le besoin de l union CINEMA[ Film [ Title, Director, Year], Theater [ Title, Director, TheaterName] ] Pour écrire certaines requêtes nous avons besoin de la disjonction ou de l union comme opérateur de l algèbre. Soit la requête: Lister les film de Almodovar ou de Sergio Leone Si nous avons la disjonction dans la condition de sélection: σ Director=Almodovar Director=Leone Film Si nous avons l opération d union dans l algèbre: σ Director=Almodovar Film σ Director=Leone Film BD - Mírian Halfeld-Ferrari p. 3/2

Exemple Soit le schéma de relation: F Actors[Director, T itle, Actor] Construire la table EquipeFilm contenant le noms de toutes les personnes travaillant dans un film donné: les acteurs et les metteurs en scène. La table doit avoir un seul attribut MEMBER. Est il possible d écrire cette requête avec SPJR en ajoutant la disjonction dans la condition de sélection? Avec l opération d union δ Director Member (π Director (σ T itle=toto FActors)) δ Actor Member (π Actor (σ T itle=toto FActors)) BD - Mírian Halfeld-Ferrari p. 4/2

Algèbre: Ajouter l union Algèbre SPCU: extension de la définition de l algèbre SPC pour inclure l opérateur d union Soient I 1 et I 2 deux relations de même arité. Comme en mathématiques, I 1 I 2 est une relation possédant cette arité et contenant l union de 2 ensembles. Algèbre SPJRU: obtenue de la même façon, sauf que l union peut seulement être appliquée à des expressions de même sort. R S = {t t I(R) t I(S) où sort(r) = sort(s)} BD - Mírian Halfeld-Ferrari p. 5/2

Encore d autres types de requêtes... Comment écrire la requête suivante: Quels sont les films de Hitchcock dans lesquels il ne joue pas? Étapes: 1. Trouver les films de Hitchcock (comme metteur en scène) (R1). 2. Trouver les films de Hitchcock dans lequel il joue (R2). 3. Nous voulons les films qui sont dans R1 et qui ne sont pas dans R2. DONC... Supprimer du résultat R1, le résultat de R2. Pour écrire cette requête nous avons besoin de la négation. π T itle (σ Director= Hitchcock (Films)) \ π T itle (σ Director= Hitchcock Actor= Hitchcock (Films)) BD - Mírian Halfeld-Ferrari p. 6/2

L opérateur de différence La négation en algèbre correspond à l opérateur de la différence ensembliste. Utilisée sur des relations de même sort (étiqueté) Utilisée sur des relations de même arité (non étiqueté) R \ S = {t t I(R) t I(S) où sort(r) = sort(s)} BD - Mírian Halfeld-Ferrari p. 7/2

L algèbre relationnelle Algèbre relationnelle étiquetée SPJRU + opérateur de différence (il est classique d y ajouter aussi l opérateur d intersection). L union est présente DONC les relations constantes non réduites à un singleton peuvent être utilisées dans cette algèbre Opérateur de sélection est étendu pour permettre la négation. Algèbre relationnelle non étiquetée SPCU + opérateur de différence (il est classique d y ajouter aussi l opérateur d intersection). L union est présente DONC les relations constantes non réduites à un singleton peuvent être utilisées dans cette algèbre. Opérateur de sélection est étendu pour permettre la négation. BD - Mírian Halfeld-Ferrari p. 8/2

Langages de requêtes équivalents Soient Q 1 et Q 2 deux langages de requête (avec leurs sémantiques associées). Q 1 Q 2 : Le langage Q 1 est dominé par Q 2 ou Q 1 est plus faible que Q 2, si pour toute requête q 1 de Q 1 il existe une requête q 2 de Q 2 telle que q 1 q 2. Q 1 Q 2 : Q 1 et Q 2 sont équivalents si Q 1 Q 2 et Q 2 Q 1. Pouvoir d expression des algèbres: Les algèbres relationnelles non étiquetées et étiquetées ont des puissances d expression équivalentes. BD - Mírian Halfeld-Ferrari p. 9/2

Intersection: un opérateur simulé par les opérateurs primitifs R S Conditions: sort(r) = sort(s) Résultat sur sort(r) R S = {t t R et t S} L intersection peut être exprimée à partir des opérations de base: R S = R \ (R \ S) = S \ (S \ R) BD - Mírian Halfeld-Ferrari p. 10/2

Exercice STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] COURSE [CourseCode, CourseT itle, CreditN b, HoursN b] 1. Trouver les étudiants inscrits dans le cours de bases de données. 2. Trouver les étudiants inscrits dans le cours de bases de données ou le cours de génie logicielle. 3. Trouver les étudiants inscrits dans le cours de bases de données et le cours de génie logicielle. 4. Trouver les étudiants inscrits dans le cours de bases de données et non inscrits dans le cours de génie logicielle. 5. Trouver les étudiants inscrits seulement dans le cours de bases de données. BD - Mírian Halfeld-Ferrari p. 11/2

SQL: Union STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] COURSE [CourseCode, CourseT itle, CreditN b, HoursN b] Trouver les étudiants inscrits dans le cours de bases de données ou le cours de génie logicielle SELECT StudNb FROM INSCRIPTION NATURAL JOIN COURSE WHERE CourseTitle = bases de données UNION SELECT StudNb FROM INSCRIPTION NATURAL JOIN COURSE WHERE CourseTitle = genie logicielle ; Une autre possibilité SELECT StudNb FROM INSCRIPTION NATURAL JOIN COURSE WHERE CourseTitle = bases de données OR CourseTitle = genie logicielle ; BD - Mírian Halfeld-Ferrari p. 12/2

SQL: Intersection STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] COURSE [CourseCode, CourseT itle, CreditN b, HoursN b] Trouver les étudiants inscrits dans le cours de bases de données et le cours de génie logicielle SELECT StudNb FROM INSCRIPTION NATURAL JOIN COURSE WHERE CourseTitle = bases de données INTERSECT SELECT StudNb FROM INSCRIPTION NATURAL JOIN COURSE WHERE CourseTitle = genie logicielle ; ATTENTION: Que fait la requête suivante? SELECT StudNb FROM INSCRIPTION NATURAL JOIN COURSE WHERE CourseTitle = bases de données AND CourseTitle = genie logicielle ; BD - Mírian Halfeld-Ferrari p. 13/2

SQL: Différence STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] COURSE [CourseCode, CourseT itle, CreditN b, HoursN b] Trouver les étudiants inscrits dans le cours de bases de données et non inscrits dans le cours de génie logicielle. SELECT StudNb FROM INSCRIPTION NATURAL JOIN COURSE WHERE CourseTitle = bases de données MINUS SELECT StudNb FROM INSCRIPTION NATURAL JOIN COURSE WHERE CourseTitle = genie logicielle ; BD - Mírian Halfeld-Ferrari p. 14/2

Remarques UNION, INTERSECTS and MINUS peuvent être utilisés entre deux relations ayant le même nombre de colonnes, dans le même ordre, ayant le même domaine. Opérations ensemblistes (sans doublons): Si les types sont les mêmes. Par exemple VARCHAR avec VARCHAR. INTERSECT ne fonctionne pas entre VARCHAR et CHAR. Les opérations UNION et MINUS entre VARCHAR et CHAR: bag! BD - Mírian Halfeld-Ferrari p. 15/2

Sous-requêtes, requêtes imbriquées Une requête imbriquée contient une autre requête qui nous appelons sous-requête. En écrivant une requête nous avons souvent le besoin d exprimer une condition qui fait référence à une relation qui doit aussi être calculée. Une requête auxiliaire, utilisée pour calculer cette relation, est une sous-requête. Il existe un certain nombre d opérateurs qui peuvent être appliqués à une relation R (calculée dans une sous-requête) et produire un résultat boolean. BD - Mírian Halfeld-Ferrari p. 16/2

Exemple STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] COURSE [CourseCode, CourseT itle, CreditN b, HoursN b] Trouver les étudiants inscrits dans le cours dont le code est de BD1-0910. SELECT S.Name FROM STUDENTS S WHERE S.Number IN ( SELECT I.StudNb FROM INSCRIPTION I WHERE I.CourseCode = BD1-0910 ); s IN R: vrai si et seulement si s est identique à une des valeurs dans R. s NOT IN R: vrai si et seulement si s n est identique à aucune valeur dans R. Dans ce cas, R est une relation unaire. Comment cela marche? Fonctionnement comme de boucles imbriquées. Pour chaque tuple dans la table STUDENTS la sous-requête est évaluée. BD - Mírian Halfeld-Ferrari p. 17/2

Plusieurs sous-requêtes STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] COURSE [CourseCode, CourseT itle, CreditN b, HoursN b] Trouver les noms des étudiants inscrits dans le cours dont le code est de Bases de données. SELECT S.Name FROM STUDENTS S WHERE S.Number IN ( SELECT I.StudNb FROM INSCRIPTION I WHERE I.CourseCode IN (SELECT C.CourseCode FROM COURSE C WHERE C.CourseTitle = Bases de donnees )); BD - Mírian Halfeld-Ferrari p. 18/2

Que fait la requête? STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] COURSE [CourseCode, CourseT itle, CreditN b, HoursN b] SELECT S.Name FROM STUDENTS S WHERE S.Number NOT IN ( SELECT I.StudNb FROM INSCRIPTION I WHERE I.CourseCode IN (SELECT C.CourseCode FROM COURSE C WHERE C.CourseTitle = Bases de donnees )); BD - Mírian Halfeld-Ferrari p. 19/2

Sous-requêtes en corrélation La sous-requête peut dépendre du tuple qui est en train d être examiné dans la requête externe. STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] Trouver les noms des étudiants inscrits dans le cours ayant code BD1-0910. SELECT S.Name FROM STUDENTS S WHERE EXISTS ( SELECT * FROM INSCRIPTION I WHERE I.CourseCode = BD1-0910 AND S.Number = I.StudNb); EXISTS R: vraie si et seulement si R n est pas vide. NOT EXISTS R: vraie si et seulement si R est vide. Pour chaque tuple S de STUDENTS, nous testons si l ensemble contenant les tuples I de INSCRIPTION tels que I.CourseCode = BD1-0910 et S.Number = I.StudNb n est pas vide. La requête interne dépend de la valeur actuelle de S et doit être réévaluée pour chaque tuple dans STUDENTS. BD - Mírian Halfeld-Ferrari p. 20/2

Que fait la requête? STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] Trouver les noms des étudiants NON inscrits dans le cours ayant code BD1-0910. SELECT S.Name FROM STUDENTS S WHERE NOT EXISTS ( SELECT * FROM INSCRIPTION I WHERE I.CourseCode = BD1-0910 AND S.Number = I.StudNb); BD - Mírian Halfeld-Ferrari p. 21/2

Opérateurs de comparaison des ensembles 1. s op ANY R: vraie si et seulement si s est op qu au moins une valeur dans la relation unaire R. 2. s op ALL R: vraie si et seulement si s est op que toutes les valeurs dans la relation unaire R. 3. op est un des opérateurs dans {<, >, <=, <>, >=,=} 4. Les négations sont aussi possibles: NOT ALL, NOT ANY BD - Mírian Halfeld-Ferrari p. 22/2

ANY STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] Trouver les codes des étudiants inscrits dans une année postérieur à l année d inscription de l étudiant Paul. SELECT I.StudNb FROM INSCRIPTION I WHERE I.Year > ANY (SELECT I2.Year FROM INSCRIPTION I2, STUDENTS S WHERE I2.StudNb = S.Number AND S.Name= Paul ); La requête trouve les étudiants dont l année d inscription est postérieur à celle d AU MOINS UN étudiant dont le nom est Paul (il peut avoir plusieurs Paul). S il n existe AUCUN étudiant Paul, alors la comparaison I.Y ear > AN Y est fausse. Raisonnement: I.Y ear est comparé à chaque résultat obtenue via la sous-requête. La sous-requête doit retourner un tuple permettant que la condition I.Y ear > ANY soit vraie. BD - Mírian Halfeld-Ferrari p. 23/2

ALL STUDENTS [N umber, N ame, Address] INSCRIPTION [StudN b, CourseCode, Y ear, T ime] Trouver les codes des étudiants inscrits le plus récemment. SELECT I.StudNb FROM INSCRIPTION I WHERE I.Year >= ALL (SELECT I2.Year FROM INSCRIPTION I2); BD - Mírian Halfeld-Ferrari p. 24/2

Opérations sur des tuples Une liste SQL est représenté par des éléments entre parenthèses. Exemple: Tuple de valeurs (123, foo ) Tuple d attributs (N ame, Address, N etworth) Nous avons un tuple de valeurs (123, foo ), tuple d attributs (N ame, Address, N etworth) Si un tuple a les mêmes composants d une relation R, alors de comparaisons sont possibles t IN R ou t <> ANY R L ordre doit être respecté BD - Mírian Halfeld-Ferrari p. 25/2