Cours Algebre Relationel
Cours Algebre Relationel
Cours Algebre Relationel
1
L’ALGEBRE RELATIONNELLE (AR)
L’algèbre relationnelle est composée de plusieurs opérations sur des tables :
- le produit cartésien entre plusieurs tables (croiser les données de plusieurs tables) ;
- la jointure entre plusieurs tables (rapprocher plusieurs tables sur des critères) ;
- la division ;
- l’union de 2 tables :
- l’intersection entre 2 tables ;
- la différence entre 2 tables ;
Le langage SQL (voir TP): est l’un des langages qui permet d’exprimer ces opérations.
2
1. La projection
Définition
Notation:
R = Projection ( R1, { A } )
[A] (R1) 3
1.1. Exemple de la projection
CLIENTS CODES
CodeClient NomClient AdresseClient
007
005
Boufarès
Le Bon
TUNIS
MONASTIR
003 Faouzi MONASTIR
4
1.1. Exemple de la projection
CLIENTS CODES
CodeClient NomClient AdresseClient CodeClient
007
005
Boufarès
Le Bon
TUNIS
MONASTIR
007
005
003 Faouzi MONASTIR 003
5
1.2. Exemple de la projection
ADRESSES = Projection ( CLIENTS, { AdresseClient } )
CLIENTS ADRESSES
CodeClient NomClient AdresseClient
007
005
Boufarès
Le Bon
TUNIS
MONASTIR
003 Faouzi MONASTIR
6
1.2. Exemple de la projection
CLIENTS ADRESSES
CodeClient NomClient AdresseClient AdresseClient
007
005
Boufarès
Le Bon
TUNIS
MONASTIR
TUNIS
MONASTIR
003 Faouzi MONASTIR
7
2. La sélection
Définition:
Notation:
R = Sélection ( R1, { C } )
R = [C] (R1)
8
2.1. Exemple de la sélection
CLIENTS
CodeClient NomClient AdresseClient
007
005
Boufarès
Le Bon
TUNIS
MONASTIR
LESMONASTIRIENS
003 Faouzi MONASTIR
CodeClient NomClient AdresseClient
9
2.1. Exemple de la sélection
10
2.2. Le critère de sélection [C] Critère Simple
Un attribut de la relation <, <=, >, >=, =, <> Une constante selon le type de donnée :
Numérique, Caractère, Date, Logique ...
Un attribut de la relation <, <=, >, >=, =, <> Un (autre) attribut de la relation
11
2.2. Le critère de sélection Critère Simple
Un attribut de la relation <, <=, >, >=, =, <> Une expression arithmétique, ...
12
2.2. Le critère de sélection Critère Complexe
13
3. Le produit cartésien
Définition
Notation:
R = Produit ( R1, R2 )
R1 R2
14
7.1. Exemple du produit cartésien
R = Produit ( R1, R2 )
R1 R2
R1 R2
A1 A2
B1 B2 B3
a
b
17
10
16 10 96
22 11 69
c 58
15
3.1. Exemple du produit cartésien
R = Produit ( R1, R2 )
R1 R2
R
A1 A2 B1 B2 B3
R1 R2
a 17 16 10 96
A1 A2
B1 B2 B3
a 17 22 11 69
a 17
16 10 96 b 10 16 10 96
b 10
22 11 69 b 10 22 11 69
c 58
c 58 16 10 96
c 58 22 11 69
En SQL : SELECT * FROM R1, R2 ;
16
3.2. Exemple du produit cartésien
R = PERSONNE CADEAU
R1 R2
A1 A2
B1 B2 B3
a
b
17
10
16 10 96 Exercice : calculer le résultat ?
22 11 69
c 58
17
3.2. Exemple du produit cartésien
R = PERSONNE CADEAU
R1 R2
A1 A2
B1 B2 B3
a
b
17
10
16 10 96
22 11 69
c 58
18
4. La Jointure
Définition
Notation:
R = Jointure ( R1, R2, { Q } )
R1 [Q] R2
19
4.1. Exemple de la jointure =
R = Jointure ( R1, R2, { R1.A2 = R2.B2 } )
R1 [R1.A2 = R2.B2] R2
R1 R2
A1 A2
B1 B2 B3
a
b
17
10
16 10 96
22 11 69
c 58
20
4.1. Exemple de la jointure =
R = Jointure ( R1, R2, { R1.A2 = R2.B2 } )
R1 [R1.A2 = R2.B2] R2
R
A1 A2 B1 B2 B3
R1 R2
A1 A2
B1 B2 B3
a
b
17
10
16 10 96 b 10 16 10 96
22 11 69
c 58
21
4.1. Exemple de la jointure =
R = Jointure ( R1, R2, { R1.A2 = R2.B2 } )
R1 [R1.A2 = R2.B2] R2
R1 R2
R
A1 A2
B1 B2 B3
a
b
17
10
16 10 96 A1
b
A2
10
B1
16
B2
10
B3
96
22 11 69
c 58
22
4.2. Exemple de la jointure >
23
4.2. Exemple de la jointure >
R = Jointure ( R1, R2, { R1.A2 > R2.B2 } )
R1 [R1.A2 > R2.B2] R2
R
R1 R2 A1 A2 B1 B2 B3
A1 A2
B1 B2 B3
a 17 16 10 96
a 17
16 10 96 a 17 22 11 69
b 10
22 11 69 c 58 16 10 96
c 58
c 58 22 11 69
24
4.3. Exemple de jointure
25
4.3. Exemple de jointure
26
5. La Division
Définition
Notation:
R = Division ( R1, R2 )
R = (R1 R2)
27
5.1. Exemple de la division
R = Division ( R1, R2 )
R = (R1 R2)
R1
A B
a x
b x R2 R
b y B
c y x
d z y
e x
e y
e z
28
5.1. Exemple de la division
R = Division ( R1, R2 )
R = (R1 R2)
R1
A B
a x
b x R2 R
b y B A
c y x b
d z y e
e x
e y
e z
29
5.2. Un autre exemple de division
R = Division ( R1, R2 )
R = (R1 R2)
R1
A B C
a c 1 R2
B C R
a c 2
a c 3
c
c
2
3
b c 3
b f 1
i b 3
30
5.2. Un autre exemple de division
R = Division ( R1, R2 )
R = (R1 R2)
R1
A B C
a c 1 R2
B C R
a c 2
a c 3
c
c
2
3
A
a
b c 3
b f 1
i b 3
31
Ci-dessous, un exemple de division (ENSEIGNEMENT ÷ ETUDIANT) qui
permet de calculer la table R contenant les enseignants de la relation
ENSEIGNEMENT qui enseignent à tous les étudiants de la relation ETUDIANT
32
Ci-dessous, un exemple de division (ENSEIGNEMENT ÷ ETUDIANT) qui
permet de calculer la table R contenant les enseignants de la relation
ENSEIGNEMENT qui enseignent à tous les étudiants de la relation ETUDIANT
33
6. Les relations compatibles
Définition
34
6.1. Exemple de relations non compatibles
Les deux schémas relationnels ci-dessous ne sont pas compatibles car les
attributs NUM_CENTRE et NUM_CLIENT ne sont pas comparables (ne
désignent pas la même information). Il en est de même pour la pair (NOMC,
PREN)...
ART_ROUGE ( CODE_ARTICLE )
ART_SEPTEMBRE (CODE_ARTICLE )
35
7. L’Union
Définition
Notation:
R = Union ( R1, R2 )
R1 R2
36
7.1. Exemple de l’Union
ART_ROUGE ART_SEPTEMBRE
37
8. L’Intersection
Définition
Notation
R = Intersection ( R1, R2 )
R1 R2
38
8.1. Exemple de l’Intersection
ART_ROUGE ART_SEPTEMBRE
ART_ROUGE ART_SEPTEMBRE ROUGEetSEP
CodeArticle CodeArticle CodeArticle
A100
A200
FB50
FB51 FB50
FB50
39
9. La différence
Définition
Notation:
R = Différence ( R1, R2 )
R1 - R2
40
9.1. Exemple de la différence
ART_ROUGE - ART_SEPTEMBRE
41
9.2. Exemple de la différence
ART_SEPTEMBRE - ART_ROUGE
ART_SEPTEMBRE ART_ROUGE RGnonSEPBis
CodeArticle CodeArticle CodeArticle
FB50
FB51
A100
A200 FB51
FB50
42
Exercices
43
Exemples Algèbre Relationnelle : BD ‘Sport Activities’ = SPORACT
Un exemple d'occurrences de la Base de Données SPORACT est donné ci-dessous :
44
Exemples Algèbre Relationnelle : BD ‘Sport Activities’ = SPORACT
45
11.1. Projection SPORACT
GOLF
HANDBALL
JUDO
KARATE
KARTING
NATATION
PLONGEE
TENNIS
YOGA
46
11.2. Projection SPORACT
Requête 2: Afficher la liste des noms des centres sportifs et des villes où ils se
trouvent.
T2 = Projection ( CENTRE, {NOMC, VILC} )
T2
NOMC VILC
Green Park VILLETANEUSE
Marouchka CANNES
Nannou Center
Nannou Center
NICE
PARIS
Remarque :
Les tuples (les lignes) en double sont éliminés dans le résultat.
Ils sont présentés dans l'ordre des attributs et triés de façon croissante.
47
11.3. Sélection SPORACT
T3
NUMC NOMC VILC COUTINSC
1O3
1O7
Pleine Forme Paris
Nannou Center Paris
340
400
48
11.4. Sélection + Projection SPORACT
Requête 4 : Afficher la liste des noms des centres sportifs de Paris
T41
NUMC NOMC VILC COUTINSC
1
1O3 Pleine Forme Paris 340
1O7 Nannou Center Paris 400
T4
2 NOMC
Nannou Center
Pleine Forme
49
11.5. Union + Sélection + Projection SPORACT
Requête 5 : Afficher la liste des numéros des centres sportifs qui proposent le football ou
le handball ou ceux qui se trouvent à villetaneuse.
T54
NUMC NUMC
NUMC
1O1 1O1
1O1
1O3 1O3
50
11.6. Différence + Sélection + Projection SPORACT
Requête 6 : Afficher la liste des numéros des centres sportifs qui ne proposent que la
natation (pas d'autres sports).
???
T6
NUMC
1O2
51
11.6. Différence + Sélection + Projection SPORACT
Requête 6 : Afficher la liste des numéros des centres sportifs qui ne proposent que la
natation (pas d'autres sports).
1O4 JUDO 1O1
NUMC SPORT NUMC
1O7 GOLF 1O3
1O2 NATATION 1O2
1O7 KARTING
1O4 T6
1O7 TENNIS 1O8 NATATION 1O8
1O7 NUMC
1O7 EQUITATION
1O8 PLONGEE
1O8 1O2
52
11.7. Intersection + Sélection + Projection SPORACT
Requête 7 : Afficher la liste des numéros des centres sportifs qui proposent à la fois le
Golf et le Tennis.
T71 = Sélection ( PROPOSE, {SPORT = ‘GOLF’} )
T72 = Sélection ( PROPOSE, {SPORT = ‘TENNIS’} )
T73 = Projection ( T71, {NUMC} )
T74 = Projection ( T72, {NUMC} )
T75 = Intersection ( T73, T74 )
T72 T74
T71 T73 T7
NUMC SPORT NUMC
NUMC SPORT NUMC NUMC
1O1 TENNIS 1O1
1O7 GOLF 1O7 1O7
1O7 TENNIS 1O7
53
11.8. Produit Cartésien SPORACT
Requête 8 : Afficher toutes les coordonnées des centres sportifs avec la liste des sports
qu'ils proposent.
T8 = Produit ( CENTRE, PROPOSE )
T8
NUMC NOMC VILC COUTINSC P.NUMC SPORT
1O1 Green Park VILLETANEUSE 300 1O1 FOOTBALL
1O1 Green Park VILLETANEUSE 300 1O1 KARTING
1O1 Green Park VILLETANEUSE 300 1O1 TENNIS
1O1 Green Park VILLETANEUSE 300 1O2 NATATION
1O1 Green Park VILLETANEUSE 300 1O3 FOOTBALL
Etc. Etc.
1O8 Nannou Center NICE 380 1O1 FOOTBALL
Etc. Etc.
1O8 Nannou Center NICE 380 1O8 PLONGEE
54
11.9. Jointure + Sélection + Projection SPORACT
Requête 9 : Afficher la liste des numéros, des noms et des villes des centres sportifs qui
proposent le karting.
T91 = Sélection ( PROPOSE, {SPORT = ‘KARTING’} )
T92 = Jointure ( T91, CENTRE {T91.NUMC = CENTRE.NUMC} ) ?
T91
NUMC SPORT
1O1 KARTING
1O7 KARTING
55
11.9. Jointure + Sélection + Projection SPORACT
Requête 9 : Afficher la liste des numéros, des noms et des villes des centres sportifs qui
proposent le karting.
T91 = Sélection ( PROPOSE, {SPORT = ‘KARTING’} )
T92 = Jointure ( T91, CENTRE {T91.NUMC = CENTRE.NUMC} )
T9 = Projection ( T92, {C.NUMC,NOMC,VILC} )
T91 T92
T92
C.NUMC
1O1
1O7
NOMC
Green Park
VILC
VILLETANEUSE
Nannou Center Paris
56
11.10. Division + Sélection + Projection SPORACT
Requête 10 : Afficher la liste des numéros des acteurs qui pratiquent tous les sports
proposés par le centre sportif de numéro 104 (les acteurs concernés doivent les pratiquer
dans le centre 104).
???
?? ??
57
11.10. Division + Sélection + Projection SPORACT
Requête 10 : Afficher la liste des numéros des acteurs qui pratiquent tous les sports
proposés par le centre sportif de numéro 104 (les acteurs concernés doivent les pratiquer
dans le centre 104).
T101 = Sélection ( PROPOSE, {NUMC = ‘104’} )
T10 = Division ( PRATIQUE, T101 )
T101
NUMC SPORT T10
1O4
1O4
KARATE
YOPGA
NUMA
OO7
1O4 JUDO
58
11.11. Division + Sélection + Projection SPORACT
Requête 11 : Afficher la liste des numéros des acteurs qui
pratiquent tous les sports proposés par le centre sportif de numéro
104 (les acteurs concernés ne les pratiquent pas forcément dans le
centre 104).
???
?? ??
59
11.11. Division + Sélection + Projection SPORACT
Requête 11 : Afficher la liste des numéros des acteurs qui pratiquent tous les sports
proposés par le centre sportif de numéro 104 (les acteurs concernés ne les pratiquent pas
forcément dans le centre 104).
T111 = Sélection ( PROPOSE, {NUMC = ‘104’} )
T112 = Projection ( T111, {SPORT} )
T113 = Projection ( PRATIQUE, {NUMA, SPORT} )
OO2 KARTING
OO7 KARATE 1O4 KARATE KARATE NUMA
OO7 YOPGA 1O4 YOPGA YOPGA OO7
OO7 JUDO
OO7 KARTING 1O4 JUDO JUDO
OO7 PLONGEE
OO8 GOLF
OO8 TENNIS
60
11.12. Calcul + Projection SPORACT
Requête 12 : Afficher la liste des numéros des centres sportifs, les villes où ils se
trouvent et le coût d'inscription réduit de 10%.
T12
NUMC VILC
1O3
1O7
Paris
Paris
COUTINSC
340
400
CoûtRéduit
306
360
61
11.13. Agrégat SPORACT
CoûtRMax
400
62
11.14. Agrégat SPORACT
CoûtRMoyen
346,666667
63
11.15. Agrégat + (Calcul + Groupement) SPORACT
R
NUMC NombreSports
1O1 3
1O2 1
1O3 3
1O4 3
1O7 4
1O8 2
64