Académique Documents
Professionnel Documents
Culture Documents
AlgebreRelationnelle Support
AlgebreRelationnelle Support
2 Opérateurs unaires 14
2.1 Projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.2 Sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3 Renommage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3 Opérations ensemblistes 19
3.1 Rappels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.2 Union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Différence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 Produit cartésien . . . . . . . . . . . . . . . . . . . . . . . . . 24
4 Opérations dérivées 27
4.1 Intersection . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.2 Jointure interne . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 Jointure externe . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4 Cas particuliers de jointures . . . . . . . . . . . . . . . . . . . 35
4.5 Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5 Extensions 41
5.1 Agrégats de n-uplets . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 Calculs de valeurs d’attributs . . . . . . . . . . . . . . . . . . 43
5.3 Classement des n-uplets . . . . . . . . . . . . . . . . . . . . . 43
5.4 Opérations de mise à jour . . . . . . . . . . . . . . . . . . . . 44
ALGREL1 1
6 Expressions relationnelles 45
6.1 Composition des opérations . . . . . . . . . . . . . . . . . . . 45
6.2 Équivalences . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
6.3 Représentation arborescente . . . . . . . . . . . . . . . . . . . 46
9 Exercices 52
9.1 Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
9.2 Propositions de réponses : . . . . . . . . . . . . . . . . . . . . 53
1 Introduction
1.1 Origine
Le modèle relationnel a été introduit dans les années 1970 par Edgar Frank
Codd ("Ted" Codd, 1923-2003), alors informaticien chez IBM, comme moyen
de définir et représenter les données de grandes bases de données d’une ma-
nière simple mais rigoureuse [Codd, 1969].
L’algèbre relationnelle complète ce modèle [Codd, 1970] en formalisant les
opérations applicables aux relations afin d’en extraire des informations afin
de répondre à des questions. Ces opérations deviendront le socle théorique
des langages d’accès aux bases de données comme SQL1 .
S’en suivront des articles complétant la définition des règles, les formes
normales, permettant de normaliser les relations afin de les rendre exemptes
de défauts [Codd, 1971]).
1
Structured Query Language
ALGREL1 1
1.2 Rappels terminologiques
ensemble
Un ensemble est une collection non ordonnée d’objets distincts.
1.2.2 Domaine
Domaine
Un domaine est un ensemble identifié de valeurs.
• nombres réels
• chaines de caractères
• énumérations
ALGREL1 2
1.2 Rappels terminologiques
1.2.3 Relation
La relation peut être vue comme une table de valeurs (ensemble de valeurs
uniques et non ordonnées).
soit :
2
n-uplet : collection d’objets à n éléments ; un "2_uplet" est un couple, un "3_uplet"
est un triplet, etc.
ALGREL1 3
1.2 Rappels terminologiques
...
S1 S2 Sn
e2
e1 en
un n-uplet
Figure 1 : Un n-uplet de la relation R, ses éléments e1, e2, ..., en, appar-
tiennent respectivement aux ensembles S1 , S2 , ..., Sn .
Relation
Une relation est un sous-ensemble du produit cartésien d’une liste de
domaines.
ALGREL1 4
1.2 Rappels terminologiques
1.2.4 Attribut
Attribut
Un attribut est l’un des composants d’une relation. Chaque attribut
est identifié et est associé à un domaine de valeur. Un même domaine
peut être utilisé plusieurs fois dans une relation.
Schéma de relation
un schéma de relation définit l’ensemble des attributs et domaines d’une
relation.
ALGREL1 5
1.2 Rappels terminologiques
Degré
Le degré d’une relation correspond à son nombre d’attributs.
n-uplet
Un n-uplet (en anglais : tuple) est une collection ordonnée de n éléments.
1.2.8 Cardinalité
Cardinalité
La cardinalité de la relation correspond à son nombre de n-uplets.
ALGREL1 6
1.3 Exemples de relations
Une manière courante de représenter les relations est la forme tabulaire (sous
forme de tableau : cf. figure 2 page 7 ) :
ALGREL1 7
1.3 Exemples de relations
• en extension :
– Cardinalité de la relation 3
Exemple : 2
ALGREL1 8
1.4 Intégrité des relations
ALGREL1 9
1.4 Intégrité des relations
Exemple : 1
• P ilote(numP , villeP )
avec :
Exemple : 2
• Reliure(reliure, prix)
avec :
ALGREL1 10
1.5 Définitions des schémas de relations
Exemple : 3
• F ormation(code, intitule)
• Inscrire(#code, #numero)
avec :
ALGREL1 11
1.6 Algèbre relationnelle
• orthogonal : les opérateurs sont indépendants les uns des autres (pas
de contraintes induites par un autre opérateur ni d’effet de bord)
• d’effectuer des calculs sur des attributs en utilisant les opérateurs arith-
métiques classiques
ALGREL1 12
1.6 Algèbre relationnelle
ALGREL1 13
2 Opérateurs unaires
Opérateurs unaires
Les opérateurs unaires (ou unitaires) s’appliquent à une seule relation
et ont pour résultat une nouvelle relation.
2.1 Projection
Projection
La projection est une opération de restriction sur les attributs.
2.1.1 Notation
2.1.2 Exemples
Exemple : 1
ALGREL1 14
2.1 Projection
R A B C
a b c
d a f
c b d
T ← πa,b(R)
T A B
a b
d a
c b
Exemple : 2
T ← πnom,prenom(Etudiant)
T nom prenom
Dupont Jacques
Durand Pierre
Lambert Paul
Durand Jacques
Le doublon de n-uplet (Lambert, Paul) a été supprimé.
T ← πprenom(Etudiant)
T prenom
Jacques
Pierre
Paul
Le doublon de n-uplet (Paul) a été supprimé.
ALGREL1 15
2.2 Sélection
2.2 Sélection
Sélection
La sélection est une opération de restriction sur les n-uplets d’une rela-
tion.
• d’opérateurs spécifiques :
ALGREL1 16
2.2 Sélection
2.2.1 Notation
2.2.2 Exemples
Exemple : 1
R A B C
a b c
d a f
c b d
T ← σB<>0a0 (R)
T A B C
a b c
c b d
Exemple : 2
ALGREL1 17
2.3 Renommage
T ← σnumero<10(Etudiant)
T numero nom prénom dateNaissance
1 Dupont Jacques 15/01/1990
9 Durand Pierre 20/07/1999
2.3 Renommage
Renommage
L’opération de renommage est utilisée afin de rebaptiser des attributs
afin de lever une ambiguïté lorsque, dans une opération binaire, un
même identificateur est utilisé.
2.3.1 Notation
ALGREL1 18
3 Opérations ensemblistes
Opérateurs ensemblistes
Les opérateurs ensemblistes (ils sont binaires) s’appliquent à 2 relations
et ont pour résultat une nouvelle relation.
3.1 Rappels
Différence
ensembles intersection union
T1 ← R − S
de départ T ←R∩S T ←R∪S
T2 ← S − R
z
y
T 1 ← {x}
x T ← {y, z} T ← {x, y, z}
T2 ← ∅
R ← {x, y, z}
S ← {y, z}
z
y
T 1 ← {x}
x T ← {y} T ← {x, y, z}
T 2 ← {z}
R ← {x, y}
S ← {y, z}
ALGREL1 19
3.2 Union
z
y
T 1 ← {x}
T ← {∅} T ← {x, y, z}
x T 2 ← {y, z}
R ← {x}
S ← {y, z}
3.2 Union
Union
L’union de 2 relations R et S de même schéma est une relation T de
même schéma contenant l’ensemble des n-uplets appartenant soit à R,
soit à S, soit à la fois à R et S (les doublons sont supprimés), soit :
(R ∪ S) = {t : t ∈ R ∨ t ∈ S} , opérateur logique OU.
3.2.1 Notation
(R ∪ S)
U
R S
L’union est commutative : (R ∪ S) est équivalent à (S ∪ R)
ALGREL1 20
3.2 Union
3.2.2 Exemples
Exemple : 1
R A B C
S A B C
a b c
- b g a
d a f
d a f
c b d
R et S sont union-compatibles.
T ← (R ∪ S)
T A B C
a b c provient de R
d a f provient de R et S : doublon supprimé
c b d provient de R
b g a provient de S
Exemple : 2
R1 ← σnumero<10(Etudiant)
R1 numero nom prénom dateNaissance
1 Dupont Jacques 15/01/1990
9 Durand Pierre 20/07/1999
R2 ← σnumero>50(Etudiant)
R2 numero nom prénom dateNaissance
105 Lambert Paul 20/10/1995
T ← (σnumero<10Etudiant) ∪ (σnumero>50Etudiant)
T ← (R1 ∪ R2)
ALGREL1 21
3.3 Différence
3.3 Différence
Différence
La différence entre 2 relations R et S de même schéma dans l’ordre (R -
S) est la relation T de même schéma contenant les n-uplets appartenant
à R sauf ceux qui appartiennent aussi à S, soit (R−S) = {t : t ∈ R∧t ∈
/
S}, opérateur logique NON
3.3.1 Notation
(R − S)
−
R S
La différence n’est pas commutative : (R − S) n’est pas équivalent à
(S − R).
3.3.2 Exemples
Exemple : 1
ALGREL1 22
3.3 Différence
R A B C
S A B C
a b c
- b g a
d a f
d a f
c b d
T ← (R − S)
T A B C
a b c
c b d
Exemple : 2
R1 ← σnumero>10(Etudiant)
R1 numero nom prénom dateNaissance
23 Lambert Paul 03/12/1994
34 Durand Jacques 15/12/1994
105 Lambert Paul 20/10/1995
R2 ← σnumero>100(Etudiant)
R2 numero nom prénom dateNaissance
105 Lambert Paul 20/10/1995
T ← (σnumero>10Etudiant) − (σnumero>100Etudiant)
T ← (R1 − R2)
T numero nom prénom dateNaissance
23 Lambert Paul 03/12/1994
34 Durand Jacques 15/12/1994
ALGREL1 23
3.4 Produit cartésien
Produit cartésien
Le produit cartésien de 2 relations R et S de schéma quelconque est
une relation T ayant pour attributs les attributs de R et de S, et dont
les n-uplets sont constitués par la combinaison de chaque n-uplet de R
avec chacun des n-uplets de S, soit (RXS) = {(r, s) : r ∈ R ∧ s ∈ S}.
Attention
la relation résultat du produit cartésien n’a pas de sens : on y asso-
cie en effet des attributs de relations différentes sans conserver de lien
sémantique entre eux.
L’opération de jointure va, quant à elle, rétablir une relation résultat
sémantiquement correcte.
3.4.1 Notation
(R × S)
×
R S
Le produit cartésien est commutatif : (R × S) est équivalent à (S × R)
3.4.2 Exemples
Exemple : 1
ALGREL1 24
3.4 Produit cartésien
R A B C
S A D
a b c
- b g
d a f
d a
c b d
T ← (R × S)
T R.A R.B R.C S.A S.D
a b c b g
a b c d a
d a f b g
d a f d a
c b d b g
c b d d a
Exemple : 2
T ← (Etudiant × F ormation)
ALGREL1 25
3.4 Produit cartésien
ALGREL1 26
4 Opérations dérivées
Elles peuvent être construites à partir des opérations de base.
4.1 Intersection
Intersection
L’intersection de 2 relations R et S de même schéma est une relation T
de même schéma (union compatible) contenant les n-uplets appartenant
à la fois à R et à S, soit , soit : (R ∩ S) = {t : t ∈ R ∧ t ∈ S} , opérateur
logique ET.
R S
4.1.1 Notation
(R ∩ S)
∩
R S
L’intersection est commutative : (R ∩ S) est équivalent à (S ∩ R)
ALGREL1 27
4.1 Intersection
4.1.2 Exemples
Exemple : 1
R A B C
S A B C
a b c
- b g a
d a f
d a f
c b d
T ← (R ∩ S)
T A B C
d a f
Exemple : 2
(σnumero<100Etudiant) ∩ (σprenom=”paul”Etudiant)
T numero nom prénom dateNaissance
23 Lambert Paul 03/12/1994
ALGREL1 28
4.2 Jointure interne
Jointure interne
La jointure interne combine un produit cartésien et une sélection.
Elle va associer chacun des n-uplets d’une relation R avec tous les n-uplets
d’une relation S qui respectent une qualification (= une condition).
Si un n-uplets de R ne trouve pas de correspondance dans S, il est éliminé
du résultat.
La jointure interne est commutative : (R 1 S) est équivalent à (S 1 R)
4.2.1 Thêta-jointure
Cette opération est essentielle dans les systèmes relationnels pour rassembler
de manière cohérente des attributs provenant de plusieurs relations.
La thêta-jointure est le résultat d’un produit cartésien de R et
S qui conserve seulement les n-uplets satisfaisant une qualification
(une qualification est une comparaison entre 2 attributs).
La jointure exige que les 2 relations aient au moins un domaine en com-
mun.
Une équi-jointure est un cas particulier de thêta-jointure n’utilisant que
l’opérateur d’égalité.
(R ./ S) ou : JOIN R (Q) S
Q
4.2.1.1 notation équivalent à :
θ
(R ./ S) = σQ(R × S)
Q
R S
ALGREL1 29
4.2 Jointure interne
Exemple : 1
R A B C
S A D
a b c
- b g
d a f
d a
c b d
R1 ← (R × S)
T R.A R.B R.C S.A S.D
a b c b g
a b c d a
d a f b g
d a f d a
c b d b g
c b d d a
T ← σR.B=S.AR1
T R.A R.B R.C S.A S.D
a b c b g
c b d b g
soit : T ← (R ./ S)
R.B = S.A
Exemple : 2
ALGREL1 30
4.2 Jointure interne
soit : T ← (Etudiant ./
Etudiant.numero = inscrire.numero
Inscrire)
T numero nom prénom dateNaissance code numero
1 Dupont Jacques 15/01/1990 INFO 1
1 Dupont Jacques 15/01/1990 MATH 1
1 Dupont Jacques 15/01/1990 PC 1
9 Durand Pierre 20/07/1999 INFO 9
23 Lambert Paul 03/12/1994 MATH 23
34 Durand Jacques 15/12/1994 INFO 34
34 Durand Jacques 15/12/1994 MATH 34
ALGREL1 31
4.2 Jointure interne
Exemple : 1
R A B C
S A D
a b c
- b g
d a f
d a
c b d
R1 ← (R × S)
T R.A R.B R.C S.A S.D
a b c b g
a b c d a
d a f b g
d a f d a
c b d b g
c b d d a
R2 ← σR.A=S.A(R1)
T R.A R.B R.C S.A S.D
d a f d a
T ← πR.A,R.B,R.C,S.D (R2)
T R.A R.B R.C S.D
d a f a
équivalent à : T ← (R 1 S)
Exemple : 2
ALGREL1 32
4.3 Jointure externe
ALGREL1 33
4.3 Jointure externe
Exemple : 1
R A B C
S A D
a b c
- b g
d a f
d a
c b d
R1 ← (R × S)
T R.A R.B R.C S.A S.D
a b c b g
a b c d a
d a f b g
d a f d a
c b d b g
c b d d a
T R.A R.B R.C S.A S.D
a b c null null
d a f d a
c b d null null
soit : T ← (R ./ S)
R.A = S.A
Exemple : 2
ALGREL1 34
4.4 Cas particuliers de jointures
T ← (Etudiant ./ Inscrire)
Etudiant.numero = inscrire.numero
T numero nom prénom dateNaissance code numero
1 Dupont Jacques 15/01/1990 INFO 1
1 Dupont Jacques 15/01/1990 MATH 1
1 Dupont Jacques 15/01/1990 PC 1
9 Durand Pierre 20/07/1999 INFO 9
23 Lambert Paul 03/12/1994 MATH 23
34 Durand Jacques 15/12/1994 INFO 34
34 Durand Jacques 15/12/1994 MATH 34
105 Lambert Paul 20/10/1995 null null
ALGREL1 35
4.4 Cas particuliers de jointures
4.4.2 Semi-jointure
4.4.3 Anti-jointure
ALGREL1 36
4.5 Division
4.5 Division
Le quotient (ou division) : de la relation R de schéma R(A1, A2, ..., An)
par la sous-relation S de schéma S(Ap + 1, ..., An) est la relation T de
schéma T (A1, A2, ..., Ap) formée de tous les n-uplets qui, combinés
à chaque n-uplets de S, donnent toujours un n-uplets de R, soit
(R ÷ S) = {t : ∀s ∈ S, (t, s) ∈ R}.
La construction du quotient passe par les étapes suivantes :
• R3 : différence de cette R2 - R
• T : différence R1 - R4
soit :
R ÷ S = πx (R) − πx ((πx (R)XS) − R)
4.5.1 Notation
(R ÷ S)
équivalent à :
÷ (R ÷ S) = πx (R) − π( (πx (R) 1 S) − R)
R S
4.5.2 Exemples
Exemple : 1
ALGREL1 37
4.5 Division
R A B C D
a b c d
a b a d S C D
a c b a - c d
b c c d a d
d a c d
b c a d
T ← (R ÷ S)
T A B
a b
b c
R1 A B
a b
a c
b c
d a
R2 A B C D
a b c d
a c c d
b c c d
d a c d
a b a d
a c a d
b c a d
d a a d
• R3 : (R2 − R)
ALGREL1 38
4.5 Division
R3 A B C D
a c c d
a c a d
d a a d
R4 A B
a c
d a
• T : (R1 − R4)
T A B
a b
b c
• les produits qui existent dans une gamme de couleurs(ou une gamme
de prix),
• les coureurs qui ont participé à une liste de grands prix, etc.
• les étudiants qui ont été présents à toutes les séances, etc.
• les étudiants qui sont inscrits à toutes les modules de formation, etc.
Exemple : 2
Les numéro d’étudiants qui sont inscrits à tous les codes de formations :
ALGREL1 39
4.5 Division
R1 ← πcode(F ormation)
R1 code
INFO
MATH
PC
T ← (Incrire ÷ R1)
T numero
1
ALGREL1 40
5 Extensions
Des extensions ont été proposées dans les années 1980 afin de prendre en
compte des cas et questions plus complexes.
5.1.1.2 Exemples
Exemple : 1
R X Y N
a b 10
a c 30
b b 20
c b 20
ALGREL1 41
5.1 Agrégats de n-uplets
T ← Gcount(X)(R)
T count(X)
4
T ← Gsum(N )(R)
T sum(N)
80
5.1.2.1 Exemples
Exemple : 1
R X Y N
a b 10
a c 30
b b 20
c b 20
T ←X Gcount(X)(R)
T X count(X)
a 2
b 1
c 1
T ←X GSum(N )(R)
T X sum(N)
a 40
b 20
c 20
ALGREL1 42
5.2 Calculs de valeurs d’attributs
Exemple : 1
R A B C
a 10 1.5
d 12 2
c 50 0.5
πA,B,B∗C−>montant(R)
R A B montant
a 10 15
d 12 24
c 50 25
ALGREL1 43
5.4 Opérations de mise à jour
R ← R − σQ(R)
ALGREL1 44
6 Expressions relationnelles
6.2 Équivalences
Savoir...
Les sélections successives sont commutatives :
σe1(σe2(R)) est équivalent à : σe2(σe1(R))
e1 et e2 sont des expressions logiques.
Attention ! ! !
Les projections successives ne sont généralement pas commutatives.
Les projections successives NE sont commutatives QUE SI dans l’ex-
pression suivante :
πl2(πl1(R1)) , seulement si l2 ⊂ l1
ALGREL1 45
6.3 Représentation arborescente
Savoir...
Les jointures successives sont associatives :
(R 1 (S 1 T )) est équivalent à ((R 1 S) 1 T )
ALGREL1 46
T
f no
R1 ←
σnom=”dupont”(F ournisseur)
T ← πf no(R1)
nom = ”dupont”
F ournisseur
ALGREL1 47
7.1 Selection
7.1 Selection
La sélection parcourt tous les tuples de la relation et effectue un test sur
chacun d’eux
• complexité : card(R)
7.2 Projection
La projection parcourt tous les tuples et élimine les doublons
7.4 Thétajointure
La thétajointure effectue un produit cartésien, puis elle sélectionne les tuples
correspondant aux critères de jointure
ALGREL1 48
7.5 Jointure naturelle
7.6 Exemple
Soient les 3 relations suivantes :
• Fournisseur : 100
• Commande 10000
• Produit : 500
7.6.0.1 Version 1
ALGREL1 49
7.6 Exemple
1. R1 ← σ#idP ro=”p1” (Commande) : 10000 tuples lus pour 200 tuples ré-
sultat(estimé)
3. Final ← πnomF ou (R2) : 200 tuples lus pour 30 tuples résultat (estimé)
ALGREL1 50
8 Mémo - Opérateurs de l’algèbre relationnelle
ALGREL1 51
9 Exercices
Soit le schéma de relation suivant :
9.1 Questions
1. lister les numéros et noms des fournisseurs
2. lister les données sur les produits dont le poids est supérieur à 15kg
5. lister les noms des fournisseurs avec les numéros de produits commandés
ainsi que la quantité commandée
10. lister les numéros de fournisseur qui ont plus de 3 commandes d’au
moins dix articles en cours
ALGREL1 52
9.2 Propositions de réponses :
2. lister les données sur les produits dont le poids est supérieur à 15kg
5. lister les noms des fournisseurs avec les numéros de produits commandés
ainsi que la quantité commandée
ALGREL1 53
RÉFÉRENCES
Références
[Codd, 1969] Codd, E. F. (1969). Derivability, redundancy and consistency
of relations stored in large data banks. IBM Research Report, San Jose,
California.
[Codd, 1970] Codd, E. F. (1970). A relational model of data for large shared
data banks. Commun. ACM, 13(6) :377–387.
ALGREL1 54
Index
avg, 41
count, 41
max, 41
min, 41
55