Langage Relationnel Graphe de Requêtes
Présentation Basé sur la théorie des ensembles relations , opérateurs et opérandes Opérateurs : relationnels, de test (<, >, = , …) et booléens (ET, OU, NON) Opérandes : constantes ou variables Recherche d’informations sur les relations par langage algébrique Résultat d’une recherche : relation Base du langage SQL GRAPHE DES REQUETES
Opérateurs relationnels Opérateurs unaires Sélection Projection Opérateurs binaires Union Intersection Différence Division Produit Cartésien jointure Opérateurs ensemblistes
Sélection Définition Symbole utilisé Une sélection appliquée sur la relation R1[a1,...,an], selon le prédicat p1 (condition) donne une relation R2[a1,...,an] ayant les n-uplets satisfaisant la condition Symbole utilisé R Prédicat de Sélection R1
Sélection : exemple 100 Sylvie 1 2 200 Michel 3 300 Corinne 400 ETUDIANT Ine Nom Groupe Année R 100 Sylvie 1 2 200 Michel 3 300 Corinne 400 Laurent 500 Jérôme 4 Année = 2 ET Groupe = 3 ETUDIANT Étudiants du groupe 3 de deuxième année ? R Ine Nom Groupe Année 200 Michel 3 2 400 Laurent
Projection Définition Symbole utilisé ai,...,am la projection de la relation R1[a1,...,an] sur les attributs ai,...,am (ai,...,am a1,...,an) est une relation R2[ai,...,am] Pas de duplication des n-uplets résultats Symbole utilisé R ai,...,am R1
Projection : exemple Année 100 Sylvie 1 2 200 Michel 3 300 Corinne 400 ETUDIANT Ine Nom Groupe Année R 100 Sylvie 1 2 200 Michel 3 300 Corinne 400 Laurent 500 Jérôme 4 Année ETUDIANT Quelles sont les années existantes ? R Année 1 2
U U Union Définition Symbole utilisé Soient R1[a1,..., an] et R2[b1,..., bn] deux relations de même schéma , Le résultat de l’union R contient les tuples de R1 et les tuples de R2 qui n’appartiennent pas à R1 Opérateur commutatif Symbole utilisé R U R1 R2 U R1 R1
U Union : Exemple R nom nomclient CLIENTS_TOULOUSE (IdCli, nom, adresse) CLIENTS_BORDEAUX (IdClient, nomclient, chiffre) R (nom) Contient l’ensemble des clients de l’entreprise R U nom nomclient CLIENTS_TOULOUSE CLIENTS_BORDEAUX
Intersection Définition Symbole utilisé Soient R1[a1,..., an] et R2[b1,..., bn] deux relations de même schéma Le résultat de l’intersection R contient les tuples qui appartiennent, à la fois, à R1 et R2 Opérateur commutatif Symbole utilisé R R1 R2 R1 R1
Intersection : exemple CLIENTS_TOULOUSE (IdCli, nom, adresse) CLIENTS_BORDEAUX (IdClient, nomclient, chiffre) R (nom) Contient les clients de l’entreprise à la fois, de Toulouse et Bordeaux R nom nomclient CLIENTS_TOULOUSE CLIENTS_BORDEAUX
U Différence Définition Symbole utilisé Soient R1[a1,..., an] et R2[b1,..., bn] deux relations de même schéma , Le résultat de la différence R contient les tuples de R1 qui n’appartiennent pas à R2 Opérateur non commutatif Symbole utilisé R U R1 R2 R1 R1
Différence : exemple R nom nomclient CLIENTS_TOULOUSE (IdCli, nom, adresse) CLIENTS_BORDEAUX (IdClient, nomclient, chiffre) R (nom) Contient les clients de Toulouse qui ne sont pas à Bordeaux R nom nomclient CLIENTS_TOULOUSE CLIENTS_BORDEAUX
Division Définition Opérateur non commutatif Soient R1[a1,...,an,b1,...,bn] et R2[b1,...,bn] deux relations telles que la structure de R2 soit incluse dans la structure de R1 R = résultat de la division de R1 par R2 R est une relation de structure R[a1,...,an] qui contient les tuples ti vérifiant : ti R (ti est un tuple de structure [a1,...,an]) tj R2 (tj est un tuple de structure [b1,...,bn]) ti,tj R1 (ti,tj est un tuple de structure [a1,...,an,b1,...,bn]) Opérateur non commutatif Sert à comparer un ensemble avec un autre ensemble (dit de référence)
Division (suite) Symbole utilisé R R1 de schéma S1,S2 R2 de schéma S2
Division : exemple BM1 316i 2P noir blanc BM2 318i 4P BM3 320d noir VEHICULE BICOLORE Codev Nomv Portes Couleur Coloris BM1 316i 2P noir blanc BM2 318i 4P BM3 320d noir blanc S2 S1 S2 Question : Quels sont les véhicules (Nomv) fabriquées en noir ET en blanc ?
Division : exemple (suite) R R Nomv Nomv 316i VEHICULE BICOLORE
Produit cartésien Définition Opérateur commutatif Symbole utilisé Soient R1[a1,...,an] et R2[b1,...,bm] deux relations de schéma différent, R = résultat du produit R1 R2 R est une relation de structure R3[a1,...,an,b1,...,bm] qui contient les combinaisons des tuples de R1 et R2 Opérateur commutatif Symbole utilisé R R1 R1
Produit cartésien : exemple ETUDIANT MATIERE Ine Nom IdM NomM 100 Sylvie 200 Michel 300 Laurent BD Bases de Données ACSI Analyse MATH Mathématiques Question : Créer la relation COURS (Ine, IdM) sachant que chaque étudiant suit toutes les matières ?
Produit cartésien : exemple (suite) COURS Ine IdM COURS 100 BD ACSI MATH 200 300 Ine, IdM ETUDIANT MATIERE
Jointure Définition Opérateur fondamental (basé sur les valeurs) Soient R1[a1,...,an] et R2[b1,...,bm] deux relations, R = jointure de ces relations avec un prédicat R[a1,...,an,b1,...,bm] contient les tuples de R1 et de R2 résultant un produit cartésien vérifiant le prédicat Opérateur fondamental (basé sur les valeurs) Le prédicat contient une clause de jointure et éventuellement d’autres conditions Opérateur binaire commutatif
Jointure (suite) Symbole utilisé R R1 de schéma S1 R2 de schéma S2 R de schéma S1,S2 Prédicat R1 R1
Jointure : exemple CLIENTS (IdCli, Nom, Adresse) OUVRAGES (IdOuv, Titre, Nbex) EMPRUNTS (IdCli#, IdOuv#, DateEmp) Question : Nom et Adresse des clients ayant emprunté l’ouvrage ‘BD’ le ’10/10/2003’ ?
Jointure : exemple (suite) Nom, Adresse IdCli=C.IdCli idCli CLIENTS C IdOuv= O.IdOuv ET DateEmp = ‘10/10/2003’ idOuv OUVRAGES O Titre = ‘BD’ OUVRAGES
Graphe des requêtes et SGBD Tous les SGBD R de type SQL mettent en œuvre un graphe de requêtes Oracle fournit une table (plan_table) montrant le schéma global Ce graphe permet d’optimiser les requêtes Certains, comme SQL Server présentent ce graphe sous forme graphique
Exemple de graphe SQL Server CLIENT EMPRUNT OUVRAGE 100 Michel Toulouse 200 Sylvie Toulouse 300 Laurent Toulouse 100 o1 2003-10-10 200 o1 2003-10-10 100 o2 2003-10-08 300 o2 2003-10-08 o1 BD o2 SGBD SELECT c.nom,c.adresse FROM client c, emprunt e, ouvrage o WHERE o.titre=‘BD’ AND o.idouv=e.idouv AND e.dateemp = ‘10/10/2003’ AND e.idcli=c.idcli Question : Nom et Adresse des clients ayant emprunté l’ouvrage ‘BD’ le ’10/10/2003’ ? Michel Toulouse Sylvie Toulouse
Exemple de graphe SQL Server (suite)
Exemple de graphe SQL Server (suite)