Académique Documents
Professionnel Documents
Culture Documents
Bases de Données Relationnelles: SQL: Algèbre Relationnelle
Bases de Données Relationnelles: SQL: Algèbre Relationnelle
86
86
Algèbre Relationnelle
• L’algèbre relationnelle (AR) est une partie autonome de la mathématique et attachée à l’étude
d’ensembles constitués d’autres éléments.
• Cette algèbre est constituée d’un ensemble de règles et d’opérations formelles qui permettent de
manipuler les relations (au sens du modèle relationnel).
• Ainsi, les relations sont à la base de l’AR. Toutes les opérations présentent ces caractéristiques :
• à l’entrée se trouve une ou plusieurs relations;
• le résultat est toujours une relation (qu’elle contienne plusieurs éléments, un seul ou qu’elle
soit vide).
87
87
1
-
Algèbre Relationnelle
88
88
89
89
2
-
La condition d’une sélection peut être une formule logique quelconque avec
des et () et des ou () entre termes de la forme et Où :
• et sont des attributs,
• a est un élément (une valeur) du domaine de Ai,
• est l’un de = , < , <= ,> , >= , != , ∪ , ∩ , v , Λ
90
90
91
91
3
-
92
92
Client Client2
id nom prenom couriel idClent2 nom prenom couriel
3 Bernard Alain ab@gmail.com
Client2 (Client) 3 Bernard Alain ab@gmail.com
23 Perrier Charles cp@yahoo.ca 23 Perrier Charles cp@yahoo.ca
2 Perrier Caroline cl@hotmail.com 2 Perrier Caroline cl@hotmail.com
8 Barrette Patricia pb@bell.ca 8 Barrette Patricia pb@bell.ca
nom prenom
Perrier Charles
Perrier Caroline
93
93
4
-
Client Client2
id nom prenom couriel idClient2 nomClient2 prenom couriel
3 Bernard Alain ab@gmail.com
Client2(idClient2, nomClient2,prenom, courriel) (Client) 3 Bernard Alain ab@gmail.com
23 Perrier Charles cp@yahoo.ca 23 Perrier Charles cp@yahoo.ca
2 Perrier Caroline cl@hotmail.com 2 Perrier Caroline cl@hotmail.com
8 Barrette Patricia pb@bell.ca 8 Barrette Patricia pb@bell.ca
Client Client
id nom prenom couriel idClient nom prenom couriel
3 Bernard Alain ab@gmail.com
id/idClient (Client) 3 Bernard Alain ab@gmail.com
23 Perrier Charles cp@yahoo.ca 23 Perrier Charles cp@yahoo.ca
2 Perrier Caroline cl@hotmail.com 2 Perrier Caroline cl@hotmail.com
8 Barrette Patricia pb@bell.ca 8 Barrette Patricia pb@bell.ca
94
94
• Notation: R×S
• Arguments : 2 relations quelconques: R(A1,..,An) S(B1,…Bk)
• Schéma de T=R×S : T(A1,..,An, B1,…Bk)
• Valeur de T=R×S : ensemble de tous les nuplets ayant n+k composants (attributs)
• dont les premiers composants forment un nuplet de R
• et les derniers composants forment un nuplet de S
95
95
5
-
RxS
R S
A B C D E A B C D E
1 1 a b a 1 1 a b a
1 2 a b c 1 1 a b c
3 4 b a a 1 1 b a a
1 2 a b a
1 2 a b c
1 2 b a a
3 4 a b a
3 4 a b c
96
3 4 b a a
96
97
97
6
-
98
98
99
7
-
• IMMEUBLE(ADI,NBETAGES,AGES,DATESC,PROP)
• APPIM(#ADI,NAP, OCCUP, ETAGE)
PROP(IMMEUBLE ⋈ OCCUP="Durand"(APPIM))
100
100
101
8
-
S R⋈S
R
A B C B C D A B C D
a b c b c d a b c d
d b c b c e a b c e
b b f d b c d
a d b
c a d
d b c e
c a d b
102
102
103
103
9
-
R S RxS
104
R S RS
A B A B A B
1 a 1 a 1 a
1 b 1 d 1 b
3 a 3 e 3 a
1 d
3 e
105
105
10
-
R
S R-S
A B A B A B
1 a 1 a 1 b
1 b 1 d 3 a
3 a 3 e
106
106
R S RS
A B A B A B
1 a 1 a 1 a
1 b 1 d
3 a 3 e
Remarque : R ∩ S = R-(R-S)
107
107
11
-
Sélection
Projection
ou
109
109
12
-
Conditions de sélection
Les conditions de base sont exprimées de deux façons:
1. attribut comparateur valeur
Où comparateur est =,<, >, <>,…,
2. attribut comparateur attribut
110
110
Conditions de sélection
Les conditions de base sont exprimées de deux façons:
1. attribut comparateur valeur
Où comparateur est BETWEEN, LIKE, IS NULL/ IS NOT NULL, IN
2. attribut comparateur attribut
111
111
13
-
Conditions de sélection
Les conditions de base sont exprimées de deux façons:
1. attribut comparateur valeur
Où comparateur est BETWEEN, LIKE, IS NULL/ IS NOT NULL, IN
2. attribut comparateur attribut
Remarque: Le littéral qui suit LIKE doit être une chaîne de caractères éventuellement avec des
caractères jokers (_, %). Pas exprimable avec l’algèbre relationnelle
112
112
Conditions de sélection
Les conditions de base sont exprimées de deux façons:
1. attribut comparateur valeur
Où comparateur est BETWEEN, LIKE, IS NULL/ IS NOT NULL, IN
2. attribut comparateur attribut
113
113
14
-
Conditions de sélection
Les conditions de base sont exprimées de deux façons:
1. attribut comparateur valeur
Où comparateur est BETWEEN, LIKE, IS NULL/ IS NOT NULL, IN
2. attribut comparateur attribut
114
114
115
115
15
-
Projection : Distinct
Soit le schéma de relation Commandes (num, cnom, pnom, quantite)
Produits commandés ⇒ SELECT pnom FROM Commandes
Remarque : Contrairement à l’algèbre relationnelle, SQL n’élimine pas les dupliqués. Pour
les éliminer on utilise DISTINCT :
Le DISTINCT peut être remplacé par la clause UNIQUE dans certains systèmes
116
116
1. Cette requête est équivalente à une jointure naturelle. Noter qu’il faut toujours expliciter les attributs
de jointure.
2. SELECT COMMANDES.PNOM, PRIX, FNOM FROM COMMANDES, FOURNITURE équivaut à un
produit cartésien des deux relations, suivi d’une projection.
117
117
16
-
118
118
119
119
17
-
Requête : Nom et Salaire des Employés gagnant plus que l’employé de numéro 12546
SQL: SELECT E1.enom, E1.sal
FROM Employe E1, Employe E2
WHERE E2. idEmp = 12546 AND
E1.sal > E2.sal
120
120
Requête : Produits qui coûtent plus que 1000 ou ceux qui sont commandés par Jean
SQL: SELECT pnom FROM Fournisseur
WHERE prix >= 1000
UNION
SELECT pnom FROM Commandes
WHERE cnom = ’Jean’
Remarques : L’union élimine les dupliqués. Pour garder les dupliqués on utilise
121 l’opération UNION ALL
121
18
-
Requête : Produits qui coûtent plus que 1000 et qui sont commandés par Jean
SQL: SELECT pnom FROM Fournisseur
WHERE prix >= 1000
INTERSECT
SELECT pnom FROM Commandes
WHERE cnom = ’Jean’
Remarques : L’union élimine les dupliqués. Pour garder les dupliqués on utilise
122 l’opération UNION ALL
122
123
123
19
-
124
124
125
125
20
-
126
126
127
127
21
-
Remarque : Les prédicats NOT IN et NOT = ALL sont utilisés de façon équivalente.
128
128
129
22
-
130
130
131
131
23
-
132
133
24
-
134
135
135
25
-
136
136
137
137
26
-
138
138
139
139
27
-
Requête : Donner pour chaque produit fourni son coût moyen. pnom AVG(prix)
141
141
28
-
142
143
143
29
-
En général, le résultat d’une requête SQL n’est pas trié. Pour trier le résultat par rapport aux
valeurs d’un ou de plusieurs attributs, on utilise la clause ORDER BY :
Soit le schéma de relation
• Fournisseur(fnum, fnom, status, ville)
• Produit(pnum, pnom)
• Fournir(fnum, pnum, prix, quantite)
SQL: SELECT ville, fnom, pnom
FROM Fournir, Fournisseur
WHERE Fournir.fnum = Fournisseur.fnum
ORDER BY ville, fnom DESC
144
144
30