Chapitre 5 Comprendre SQL grâce à l’Algèbre Relationnelle 1 Département Informatique Sarah Cohen-Boulakia, Bases de données Langage de requêtes pour les BDs relationnelles (1/2) • Langage de requêtes : ils permettent de manipuler et de retrouver des données d’une base de données • Le modèle relationnel supporte des requêtes simples et expressives • Les langages de requêtes pour les BDs relationnelles sont fondés sur des bases formelles solides (logique du premier ordre) 2 Département Informatique Sarah Cohen-Boulakia, Bases de données Langage de requêtes pour les BDs relationnelles (2/2) • Langage de requêtes ≠ langage de programmation – Un langage de requêtes n’a pas pour but d’être utilisé pour faire des traitements ou calculs complexes – But : être facile d’utilisation et offrir un accès efficace aux données 3 Département Informatique Sarah Cohen-Boulakia, Bases de données Langages de requêtes formels • 2 langages de requêtes formels existent (fondement de SQL) – L’algèbre relationnelle : langage opérationnel, une requête s’écrit comme une succession d’opérations effectuées sur des relations – Calcul relationnel : langage déclaratif, une requête s’écrit comme la spécification du résultat attendu (sous forme logique) 4 Département Informatique Sarah Cohen-Boulakia, Bases de données Préliminaire 1 • Une requête s’applique à des instances de relations et le résultat d’une requête est aussi une instance de relation – Autrement dit : Une requête se pose sur des tables qui ont un contenu (potentiellement vide) et renvoie une table avec un contenu (potentiellement vide) R1 : table R2 : table Requête Q prenant en entrée R1 et R2 Résultat de Q = une table 5 Département Informatique Sarah Cohen-Boulakia, Bases de données Préliminaire 2 • Le schéma du résultat d’une requête sera toujours le même, quelque soit le contenu des relations – La table résultat d’une requête mettra toujours en jeu les mêmes attributs (quelque soit le contenu !) 6 Département Informatique Sarah Cohen-Boulakia, Bases de données Préliminaire 3 • Les schémas des relations prises en entrées par une requête sont fixés – Une requête s’exprime grâce à des noms d’attributs et de tables • Mais une requête ne doit jamais dépendre des instances des relations – Aucune connaissance du contenu des tables ne doit être nécessaire pour bien comprendre la requête 7 Département Informatique Sarah Cohen-Boulakia, Bases de données Algèbre relationnelle • Opérateurs de base – Sélection ( ), Projection (), Produit cartésien (X), – Différence (\ ou -) et Union (U) • Autres opérateurs – Intersection, jointure, division, renomage: très utiles aussi ! • Puisque chaque opérateur appliqué à une relation renvoie une relation, les opérateurs peuvent être imbriqués (clôture de l’Algèbre relationnelle) 8 Département Informatique Sarah Cohen-Boulakia, Bases de données Projection : introduction • Notation : A1,…,Ap(R) avec r relation et A1,…,Ap attributs de R • Supprime les attributs qui sont différents des attributs de la liste de projection (A1,…,Ap) • Le schéma du résultat contient exactement les champs de la liste de projection (A1,…,Ap) • NB : L’opérateur de projection élimine les redondances (ce n’est pas le cas en SQL) 9 Département Informatique Sarah Cohen-Boulakia, Bases de données Q1= Projection : exemple NumClient, DateRes(Reservation) Q1 Reservation NumRes Classe DateRes 001 1 2 002 NumClient NumClient 18/11/2007 17902567 17902567 2780289 2780289 19/11/2007 DateRes 18/11/2007 19/11/2007 NB : la projection est un opérateur qui n’agit pas sur les lignes du résultat mais sur les colonnes (c’est-àdire sur le schéma) 10 Département Informatique Sarah Cohen-Boulakia, Bases de données Projection : Définition formelle Input – r une relation de schéma R – X un ensemble d’attributs tels que X R Output X(r)={t(X) / t r} Où t(X) est la restriction de t sur les attributs de X Ensemble des n-uplets de r restreints aux attributs de X Le schéma de X(r) est X 11 Département Informatique Sarah Cohen-Boulakia, Bases de données Sélection : introduction • Sélection des n-uplets (lignes) qui satisfont la condition de sélection • Le schéma du résultat est identique au schéma pris en entrée 12 Département Informatique Sarah Cohen-Boulakia, Bases de données Sélection : exemple Q2= ET (DateRes<20-11-2007Classe=2)( Reservation) Condition de sélection Q2 Réservation NumRes 001 Classe DateRes 1 002 2 003 2 NumClient 18/11/2007 17902567 19/11/2007 20/11/2007 NumRes 002 Classe DateRes 2 NumClient 19/11/2007 2780289 2780289 2780289 13 Département Informatique Sarah Cohen-Boulakia, Bases de données Sélection : Définition formelle Input – r une relation de schéma R – une condition de sélection (définie ci-après) Output (r)={t / t r et (t)} L’ensemble des n-uplets de la relation r pour lesquels la condition est vraie Le schéma de (r) est R 14 Département Informatique Sarah Cohen-Boulakia, Bases de données Définition formelle de la condition Définition récursive • Base : Soient 2 attributs A et B (non nécesairement différents), et a Dom(A) peut prendre les formes suivantes A =B, A < B, A=a, A < a (on utilisera aussi >, ≤, ≥ et ≠) • Si 1 et 2 sont deux conditions alors (1), ¬1 (négation), 1 2 (et) et 1 2 (ou) sont des conditions de sélection 15 Département Informatique Sarah Cohen-Boulakia, Bases de données Exemples de conditions • DateRes ≥ 20-11-2007 • Classe = 2 • Nom = ‘Payen’ • (DateRes = 20-11-2007 DateRes = 21-11-2007) Classe = 2 • NumClient = NumSS 16 Département Informatique Sarah Cohen-Boulakia, Bases de données Exercice 1 • Quel est le résultat de la requête Q3 suivante en considérant l’instance de la relation R ci-dessous ? Q3 =Nom (Prénom = ‘Jean’ (Enseignant) ) Enseignant NumEns 1 2 3 Nom Prénom Voisin Jean Benzaken Claudine Forest Jean 17 Département Informatique Sarah Cohen-Boulakia, Bases de données Correction (Exercice 1) • Quel est le résultat de la requête Q3 suivante en considérant l’instance de la relation R ci-dessous ? Q3 =Nom (Prénom = ‘Jean’ (Enseignant) ) Enseignant NumEns Q3 Nom Prénom Nom 1 2 Voisin Jean Benzaken Claudine Forest 3 Jean Voisin Forest 18 Département Informatique Sarah Cohen-Boulakia, Bases de données Produit cartésien : Introduction • Opérateur binaire (prend deux relations entre entrée : r1 et r2) • Chacun des n-uplets de r1 est combiné avec chacun des n-uplets de r2 • Le schéma du résultat a l’union des attributs des relations • NB : Si les deux relations ont un attribut de même nom, on renomme cet attribut 19 Département Informatique Sarah Cohen-Boulakia, Bases de données Produit cartésien : Exemple R1 A B C a1 b1 c1 a2 b2 c2 R2 A D a2 d2 a2 d3 a3 d4 Renommage R1 x R2 R1.A a1 a1 a1 a2 a2 a2 B b1 b1 b1 b2 b2 b2 C c1 c1 c1 c2 c2 c2 R2.A a2 a2 a3 a2 a2 a3 D d2 d3 d4 d2 d3 d4 20 Département Informatique Sarah Cohen-Boulakia, Bases de données Produit cartésien : Définition formelle Input – r, s deux relations de schéma R et S Output r x s = {t / t(R) r et t(S) s} La restriction du produit aux attribut de R est r et celle aux attributs de S est s r x s a pour schéma R+S NB : R+S est l’union disjointe de R et S {R.A / AR } U {S.B / B S} 21 Département Informatique Sarah Cohen-Boulakia, Bases de données SQL par défaut fait un produit cartésien ! Client Reservation NumSS NumRes 1 2 Classe DateRes Nom NumClient 17902567 Payen 1 2 18/11/2007 17902567 19/11/2007 SELECT Nom, Prenom, Reservation.NumRes, DateRes FROM Reservation, Client WHERE DateRes < ‘2007-11-19’ Prénom 2780289 Nom Payen 2780289 Payen 29005579 Quoti Prenom NumRes Olivier Judith Mathilde DateRes Olivier 1 Payen Judith 1 18/11/2007 Quoti Mathilde 1 18/11/2007 18/11/2007 Ces deux lignes mélangent des informations qui n’ont 22 rien à voir !! Sarah Cohen-Boulakia, Bases de données Département Informatique Jointure naturelle : Introduction • Opération binaire fondamentale (optimisation) ! • Utilise R1 et R2 qui ont des attributs communs (appelons-les X) • Le schéma du résultat est – similaire au schéma du produit cartésien – modulo que les attributs X n’apparaissent qu’une fois • Au niveau des lignes : on combine les lignes de R1 avec les lignes de R2 qui ont même valeur pour les attributs X 23 Département Informatique Sarah Cohen-Boulakia, Bases de données Jointure naturelle : Exemple R1 A B C a1 b1 c1 a2 b2 c2 R2 A D a2 d2 a2 d3 a3 d4 R1 R2 R1 R2 Équivaut à R1.A = R2.A A a2 a2 B b2 b2 C c2 c2 D d2 d3 24 Département Informatique Sarah Cohen-Boulakia, Bases de données Jointure naturelle : Définition formelle • Input – r et s de schéma R et S • Output r r s = {t / t(R) r et t(S) s} s= R union S (r x s) Avec R S = {B1, …, Bp} : t(R.B1)= t(S.B1) … t(R.Bp)= t(S.Bp) 25 Département Informatique Sarah Cohen-Boulakia, Bases de données Phi (ou théta) Jointure • Cas particulier de jointure avec condition R1 R2 R1 est une condition de sélection R2 A 3 D 2 R1 E B C 2 3 1 7 1 1 4 9 2 2 R2 R2.A > R1.C A D E B C 3 3 2 2 2 3 1 9 1 7 2 7 1 2 1 26 Département Informatique Sarah Cohen-Boulakia, Bases de données Union, Intersection, Différence : Introduction • Tous ces opérateurs prennent en entrée 2 relations qui doivent avoir le même schéma • Union (R1 R2) : ensemble de n-uplets qui sont dans R1 ou dans R2 • Intersection (R1 R2) ensemble de n-uplets qui sont dans R1 et dans R2 • Différence (R1 \ R2 ou R1 – R2) : ensemble de n-uplets qui sont dans R1 mais pas dans R2 27 Département Informatique Sarah Cohen-Boulakia, Bases de données Union, Intersection, Différence : Exemples R1 R2 R1 R2 A B a1 b1 A R1 R2 A B A B A B a1 b1 a1 b1 a2 b2 a2 b2 a3 b3 a3 b3 a2 b3 a3 b4 B a1 b1 a2 b2 a2 b3 a3 b3 a3 b4 Les n-uplets à la fois dans R1 et dans R2 Les n-uplets de R1 union ceux de R2 Pas de doublon Département Informatique R1 \ R2 Sarah Cohen-Boulakia, Bases de données Les n-uplets de R1 mais qui ne sont pas dans R2 28 Union, Intersection, Différence : Définitions formelles Input – r, s deux relations de même schéma R Output r s = { t / t r ou t s } r s = { t / t r et t s } r \ s = { t / t r et t s } de schéma R 29 Département Informatique Sarah Cohen-Boulakia, Bases de données Exercice 2 • Quel est le résultat de la requête Q4 suivante en considérant les instances des relations ci-dessous ? Q4 =(A,B (C R1 ≠ c1 (R1) )) R2 R2 A B C A B a1 b1 c1 a2 b2 a2 b2 c2 a2 b3 a3 b3 c3 a3 b4 30 Département Informatique Sarah Cohen-Boulakia, Bases de données Correction (Exercice 2) 1/3 • Quel est le résultat de la requête Q4 suivante en considérant l’instance des relations ci-dessous ? Q4 =A,B (C R1 ≠ c1 (R1) ) R2 R2 A B C A B a1 b1 c1 a2 b2 a2 b2 c2 a2 b3 a3 b3 c3 a3 b4 31 Département Informatique Sarah Cohen-Boulakia, Bases de données Correction (Exercice 2) 2/3 • Quel est le résultat de la requête Q4 suivante en considérant l’instance des relations ci-dessous ? Q4 =A,B (C R1 ≠ c1 (R1) ) R2 R2 A B C A B a1 b1 c1 a2 b2 a2 b2 c2 a2 b3 a3 b3 c3 a3 b4 32 Département Informatique Sarah Cohen-Boulakia, Bases de données Correction (Exercice 2) 3/3 • Quel est le résultat de la requête Q4 suivante en considérant l’instance des relations ci-dessous ? Q4 =(A,B (C R1 ≠ c1 (R1) )) R2 R2 Q4 A B C A B A B a1 b1 c1 a2 b2 a2 b2 a2 b2 c2 a2 b3 a3 b3 c3 a3 b4 33 Département Informatique Sarah Cohen-Boulakia, Bases de données Propriétés algébriques • L’union et l’intersection sont commutatifs et associatifs – r s = s r, r (s1 s2) = (r s1) s2 – De même pour • Le produit cartésien est associatif et commutatif* • La jointure est associative et commutative* • D’autres propriétés peuvent être énoncées : monotonie de certains opérateurs, fermeture etc. *si on considère un ordre sur les colonnes 34 Département Informatique Sarah Cohen-Boulakia, Bases de données Exemple d’équivalences • Les relations d’équivalence de l’algèbres sont des égalités entre des formules • Elles sont à la base des optimisations de requêtes ! • Exercice – Sachant que les schémas de R et S sont les mêmes et si X R, trouvez un contre exemple aux égalités qui sont fausses et démontrez celles qui sont justes • X (r s) = X (r) X (s) • X(r – s) = X (r) - X (s) • X(r s) = X (r) X (s) 35 Département Informatique Sarah Cohen-Boulakia, Bases de données Exemple d’équivalences (correction) • Exercice – Sachant que R = S (schémas) et X R, trouvez un contre exemple aux égalités qui sont fausses et démontrez celles qui sont justes •X (r s) = X (r) X (s) NON •X(r – s) = X (r) - X (s) NON •X(r s) = X (r) X (s) OUI ! 36 Département Informatique Sarah Cohen-Boulakia, Bases de données Non Distributivité de l’intersection • X (r s) = X (r) X (s) NON Contre exemple r s A B A B a b a b’ A (r s) = A (r) A (s) = {a} 37 Département Informatique Sarah Cohen-Boulakia, Bases de données Non Distributivité de la différence • X (r - s) = X (r) - X (s) NON Contre exemple r s A B A B a b a b’ A (r - s) = {a} A (r) - A (s) = 38 Département Informatique Sarah Cohen-Boulakia, Bases de données Distributivité de l’union : Démonstration X (r s) = X (r) X (s) On se ramène aux définitions Rappel : X(r)={t(X) / t r} ; tX(r) t’ r et t’(X)=t t X (r s) t’, t’ (r s) et t’(X)=t // par définition de la projection t’ ((t’ r) ou (t’s)) et t’(X)=t // par définition de l’union t’ ((t’ r) et t’(X)=t) ou ((t’s) et t’(X)=t) // distrib. de « et » sur « ou » ( t’, t’ r et t’(X)=t) ou ( t’, t’s et t’(X)=t) // distributivité de t X (r) ou t X (s) // par définition de la projection t ( X (r) X (s)) // par définition de l’union 39 Département Informatique Sarah Cohen-Boulakia, Bases de données Conclusion • L’algèbre relationnelle est définie de façon très rigoureuse et offre un langage de requêtes à la fois simple et puissant • L’algèbre relationnelle est à la base – De SQL – Des plans de requêtes utilisés par les SGBD pour optimiser les requêtes 40 Département Informatique Sarah Cohen-Boulakia, Bases de données