Upload
dangque
View
224
Download
1
Embed Size (px)
Citation preview
1Sarah Cohen-Boulakia, Bases de données
1
Département Informatique
Chapitre 5
Comprendre SQL grâce
à l’Algèbre Relationnelle
2Sarah Cohen-Boulakia, Bases de données
2
Département Informatique
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)
3Sarah Cohen-Boulakia, Bases de données
3
Département Informatique
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
4Sarah Cohen-Boulakia, Bases de données
4
Département Informatique
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)
5Sarah Cohen-Boulakia, Bases de données
5
Département Informatique
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)
Requête Q
prenant en
entrée R1 et
R2
R1 : table R2 : tableRésultat de Q
= une table
6Sarah Cohen-Boulakia, Bases de données
6
Département Informatique
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 !)
7Sarah Cohen-Boulakia, Bases de données
7
Département Informatique
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
8Sarah Cohen-Boulakia, Bases de données
8
Département Informatique
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)
9Sarah Cohen-Boulakia, Bases de données
9
Département Informatique
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)
10Sarah Cohen-Boulakia, Bases de données
10
Département Informatique
Projection : exemple
Q1=NumClient, DateRes(Reservation)
ClasseDateRes
1 18/11/2007
2 19/11/2007
Reservation
NumClient
17902567
2780289
NumRes
001
002
DateRes
18/11/2007
19/11/2007
Q1NumClient
17902567
2780289
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)
11Sarah Cohen-Boulakia, Bases de données
11
Département Informatique
Projection : Définition formelle
Input
– r une relation de schéma R
– X un ensemble d’attributs tels que X R
Output
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
X(r)={t(X) / t r}
12Sarah Cohen-Boulakia, Bases de données
12
Département Informatique
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
13Sarah Cohen-Boulakia, Bases de données
13
Département Informatique
Sélection : exemple
Q2=(DateRes<20-11-2007Classe=2)(Reservation)
ET
Condition de sélection
ClasseDateRes
1 18/11/2007
2 19/11/2007
Réservation
NumClient
17902567
2780289
NumRes
001
002
Q2
2 20/11/2007 2780289003
Classe DateRes
2 19/11/2007
NumClient
2780289
NumRes
002
14Sarah Cohen-Boulakia, Bases de données
14
Département Informatique
Sélection : Définition formelle
Input
– r une relation de schéma R
– une condition de sélection (définie ci-après)
Output
L’ensemble des n-uplets de la relation r pour
lesquels la condition est vraie
Le schéma de (r) est R
(r)={t / t r et (t)}
15Sarah Cohen-Boulakia, Bases de données
15
Département Informatique
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
16Sarah Cohen-Boulakia, Bases de données
16
Département Informatique
Exemples de conditions
• DateRes ≥ 20-11-2007
• Classe = 2
• Nom = ‘Payen’
• (DateRes = 20-11-2007
DateRes = 21-11-2007)
Classe = 2
• NumClient = NumSS
17Sarah Cohen-Boulakia, Bases de données
17
Département Informatique
Exercice 1
• Quel est le résultat de la requête Q3
suivante en considérant l’instance de la
relation R ci-dessous ?
NumEns Nom Prénom
1 Voisin Jean
2 Benzaken Claudine
3 Jean
Enseignant
Forest
Q3 =Nom(Prénom = ‘Jean’ (Enseignant) )
18Sarah Cohen-Boulakia, Bases de données
18
Département Informatique
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 ?
NumEns Nom Prénom
1 Voisin Jean
2 Benzaken Claudine
3 Jean
Enseignant
Forest
Q3 =Nom(Prénom = ‘Jean’ (Enseignant) )
Nom
Voisin
Q3
Forest
19Sarah Cohen-Boulakia, Bases de données
19
Département Informatique
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
20Sarah Cohen-Boulakia, Bases de données
20
Département Informatique
Produit cartésien : Exemple
R1 x R2A B
a1 b1
a2 b2
R1
A D
a2 d2
a2
a3
R2
d3
d4
C
c1
c2 R1.A B C R2.A D
a1 b1 c1 a2 d2
a1 b1 c1 a2 d3
a1 b1 c1 a3 d4
a2 b2 c2 a2 d2
a2
a2
b2
b2
c2
c2
a2
a3
d3
d4
Renommage
21Sarah Cohen-Boulakia, Bases de données
21
Département Informatique
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}
22Sarah Cohen-Boulakia, Bases de données
22
Département Informatique
SQL par défaut fait un produit cartésien !
SELECT Nom,
Prenom,
Reservation.NumRes,
DateRes
FROM Reservation,
Client
WHERE DateRes <
‘2007-11-19’
NumSS Nom Prénom
17902567 Payen Olivier
2780289 Payen Judith
29005579 Quoti Mathilde
Client
Classe DateRes
1 18/11/2007
2 19/11/2007
Reservation
NumClient
17902567
2780289
NumRes
1
2
Nom Prenom DateRes
Payen Olivier 18/11/2007
Payen Judith 18/11/2007
Quoti Mathilde 18/11/2007
1
1
1
NumRes
Ces deux lignes mélangent des informations qui n’ont
rien à voir !!
23Sarah Cohen-Boulakia, Bases de données
23
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
24Sarah Cohen-Boulakia, Bases de données
24
Département Informatique
Jointure naturelle : Exemple
R1 R2A B
a1 b1
a2 b2
R1
A D
a2 d2
a2
a3
R2
d3
d4
C
c1
c2
A B C D
a2 b2 c2 d2
a2 b2 c2 d3
R1 R2Équivaut à
R1.A = R2.A
25Sarah Cohen-Boulakia, Bases de données
25
Département Informatique
Jointure naturelle : Définition formelle
• Input
– r et s de schéma R et S
• Output
r s = {t / t(R) r et t(S) s}
r s = R union S (r x s)
Avec R S = {B1, …, Bp}
: t(R.B1)= t(S.B1) … t(R.Bp)= t(S.Bp)
26Sarah Cohen-Boulakia, Bases de données
26
Département Informatique
Phi (ou théta) Jointure
• Cas particulier de jointure avec condition
est une condition de sélection
R1 R2
A D
3 2
2
1
R2
3
4
A D E B C
3
3
2
2
2
3
1
9
1
7
2
7
1
2
1
E B
1 7
9 2
R1
C
1
R1 R2
2
R2.A > R1.C
27Sarah Cohen-Boulakia, Bases de données
27
Département Informatique
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
28Sarah Cohen-Boulakia, Bases de données
28
Département Informatique
Union, Intersection, Différence :
Exemples
A B
a1 b1
a2 b2
a3
R1
b3
A B
a1 b1
a2
a3
R2
b3
A B
a1 b1
a2
a3
b2
R1 R2
b4
b3
a2
a3
b3
b4
A B
a1 b1
R1 R2
A B
a2 b2
R1 \ R2
a3 b3
Les n-uplets de R1
union ceux de R2
Pas de doublon
Les n-uplets
à la fois
dans R1 et
dans R2Les n-uplets
de R1 mais
qui ne sont
pas dans R2
29Sarah Cohen-Boulakia, Bases de données
29
Département Informatique
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
30Sarah Cohen-Boulakia, Bases de données
30
Département Informatique
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 ≠ c1 (R1) )) R2
A B
a1 b1
a2 b2
a3
R1
b3
A B
a2 b2
a2
a3
R2
b3
b4
C
c1
c2
c3
31Sarah Cohen-Boulakia, Bases de données
31
Département Informatique
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 ≠ c1 (R1) ) R2
A B
a1 b1
a2 b2
a3
R1
b3
A B
a2 b2
a2
a3
R2
b3
b4
C
c1
c2
c3
32Sarah Cohen-Boulakia, Bases de données
32
Département Informatique
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 ≠ c1 (R1) ) R2
A B
a1 b1
a2 b2
a3
R1
b3
A B
a2 b2
a2
a3
R2
b3
b4
C
c1
c2
c3
33Sarah Cohen-Boulakia, Bases de données
33
Département Informatique
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 ≠ c1 (R1) )) R2
A B
a1 b1
a2 b2
a3
R1
b3
A B
a2 b2
a2
a3
R2
b3
b4
C
c1
c2
c3
A B
a2 b2
Q4
34Sarah Cohen-Boulakia, Bases de données
34
Département Informatique
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
35Sarah Cohen-Boulakia, Bases de données
35
Département Informatique
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)
36Sarah Cohen-Boulakia, Bases de données
36
Département Informatique
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 !
37Sarah Cohen-Boulakia, Bases de données
37
Département Informatique
Non Distributivité de l’intersection
•X (r s) = X (r) X (s) NON
Contre exemple
A B
a b
A B
a b’
r s A (r s) =
A (r) A (s) = {a}
38Sarah Cohen-Boulakia, Bases de données
38
Département Informatique
Non Distributivité de la différence
•X (r - s) = X (r) -X (s) NON
Contre exemple
A B
a b
A B
a b’
r s A (r - s) = {a}
A (r) -A (s) =
39Sarah Cohen-Boulakia, Bases de données
39
Département Informatique
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
40Sarah Cohen-Boulakia, Bases de données
40
Département Informatique
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