0% ont trouvé ce document utile (0 vote)
60 vues109 pages

Cours Algèbre Relationnelle

ALGEBRE

Transféré par

Ádám Biró
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
60 vues109 pages

Cours Algèbre Relationnelle

ALGEBRE

Transféré par

Ádám Biró
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Algèbre relationnelle et sql

Algèbre Relationnelle et langage SQL


2024/2025

Algèbre relationnelle
Company Logo
1
Algèbre relationnelle et sql

Introduction :
La conception de la structure de la base de données, si
elle est un peu complexe à appréhender, peut
nécessiter, en amont, l'utilisation d'outils de
modélisation conceptuels de type entités-
associations (Modèle Conceptuel des Données de la
méthode MERISE ou diagramme de classes du
langage UML).
Algèbre relationnelle
Company Logo
2
Algèbre relationnelle et sql

Introduction :
Mais, même dans les cas les plus simples il faut
obligatoirement connaître les concepts du Modèle
Relationnel, sans quoi un utilisateur non averti risque
de créer une structure inadaptée et sera vite bloqué
dans la conception des requêtes.

Algèbre relationnelle
Company Logo
3
Algèbre relationnelle et sql

Introduction :
Il s'agit ici, d'étudier les principaux opérateurs de
l'algèbre relationnelle servant de base à l'élaboration
et à l'analyse (plan d'exécution) des requêtes.

Algèbre relationnelle
Company Logo
4
Algèbre relationnelle et sql

Introduction :
Bon nombre d'utilisateurs qui voient le matériel
informatique et les logiciels changer tous les trois
mois, seraient surpris d'apprendre que l'algèbre
relationnelle a été définie par Codd en 1970.

Algèbre relationnelle
Company Logo
5
Algèbre relationnelle et sql

Introduction :
Une bonne maîtrise de l'algèbre relationnelle permet
de concevoir n'importe quelle requête aussi complexe
soit-elle avant de la mettre en œuvre à l'aide du
langage SQL.

Algèbre relationnelle
Company Logo
6
Algèbre relationnelle et sql

Introduction :
Parmi les opérations de l'algèbre relationnelle, on
dispose d'opérations classiques sur les
ensembles (union, intersection, différence, produit
cartésien) puis d'opérations propres (projection,
sélection, jointure, division).

Algèbre relationnelle
Company Logo
7
Algèbre relationnelle et sql

Introduction :
Sont également exposées ici des opérations de calcul,
de regroupement , de comptage et de tri, non définies
à l'origine par Codd mais très utiles.

Algèbre relationnelle
Company Logo
8
Algèbre relationnelle et sql
Introduction au Modèle Relationnel
L'exemple suivant, relatif à la gestion simplifiée des étapes
du Tour de France 1997, va nous servir à introduire le
vocabulaire lié au modèle relationnel.

Algèbre relationnelle
Company Logo
9
Algèbre relationnelle et sql

Algèbre relationnelle
Company Logo
10
Algèbre relationnelle et sql

Algèbre relationnelle
Company Logo
11
Algèbre relationnelle et sql

Algèbre relationnelle
Company Logo
12
Algèbre relationnelle et sql

Introduction :
•Comme nous pouvons le constater, le modèle
relationnel est un modèle d'organisation des données
sous forme de Tables (Tableaux de valeurs) ou
chaque Table représente une Relation, au sens
mathématique d'Ensemble.

Algèbre relationnelle
Company Logo
13
Algèbre relationnelle et sql

Introduction :
C'est ainsi que dans l'exemple présenté, figurent
l'ensemble des Equipes, des Coureurs, des Etapes, des
Temps réalisés par les coureurs à chacune des étapes,
et enfin l'ensemble des pays.

Algèbre relationnelle
Company Logo
14
Algèbre relationnelle et sql

Introduction :
• Les colonnes des tables s'appellent des attributs et les lignes
des n-uplets (où n est le degré de la relation, c'est à dire le
nombre d'attributs de la relation).
• Un attribut ne prend qu'une seule valeur pour chaque n-
uplet.
• L'ordre des lignes et des colonnes n'a pas d'importance.

Algèbre relationnelle
Company Logo
15
Algèbre relationnelle et sql

Algèbre relationnelle
Company Logo
16
Algèbre relationnelle et sql

Introduction :
•Chaque table doit avoir une clé primaire constituée
par un ensemble minimum d'attributs permettant de
distinguer chaque n-uplet de la Relation par rapport à
tous les autres.
•Chaque ensemble de valeurs formant la clé primaire
d'un n-uplet est donc unique au sein d'une table.
C'est ainsi que dans la table COUREURS, chaque
coureur a un NuméroCoureur différent.

Algèbre relationnelle
Company Logo
17
Algèbre relationnelle et sql

Algèbre relationnelle
Company Logo
18
Algèbre relationnelle et sql

Introduction :
•Les liens sémantiques (ou règles de gestion sur les
données) existants entre les ensembles sont réalisés
par l'intermédiaire de clés étrangères faisant elles-
mêmes référence à des clés primaires d'autres tables.

Algèbre relationnelle
Company Logo
19
Algèbre relationnelle et sql

Introduction :
C'est ainsi que dans la table COUREURS, la clé étrangère
CodeEquipe (faisant référence à la clé primaire de même
nom dans la table EQUIPES) traduit les deux règles de
gestion suivantes :

1. Un COUREUR appartient à une EQUIPE


2. Une EQUIPE est composée de plusieurs COUREURS.

Algèbre relationnelle
Company Logo
20
Algèbre relationnelle et sql

Algèbre relationnelle
Company Logo
21
Algèbre relationnelle et sql

Introduction :
•Il existe deux grands types de liens : Un -
Plusieurs (comme le précédent) et Plusieurs - Plusieurs.
•La réalisation de ce dernier type de liens, un peu plus
complexe, passe par l'utilisation d'une table
intermédiaire dont la clé primaire est formée des clés
étrangères des tables qu'elle relie.

Algèbre relationnelle
Company Logo
22
Algèbre relationnelle et sql

Introduction :
C'est ainsi que la table des TEMPS réalisés à chaque
étape par chacun des coureurs exprime les deux règles
de gestion suivantes :
1. Un COUREUR participe à plusieurs ETAPES
2. Une ETAPE fait participer plusieurs COUREURS

Algèbre relationnelle
Company Logo
23
Algèbre relationnelle et sql

Algèbre relationnelle
Company Logo
24
Algèbre relationnelle et sql

Introduction :
Le modèle relationnel est le plus souvent décrit sous
la forme suivante, les clés primaires étant soulignées
et les clés étrangères marquées par un signe distinctif
(ici *).

Algèbre relationnelle
Company Logo
25
Algèbre relationnelle et sql

Introduction :
•On peut aussi le représenter sous forme graphique,
de manière à mieux visualiser et interpréter les liens :

Algèbre relationnelle
Company Logo
26
Algèbre relationnelle et sql

Introduction : Règles de gestion

Algèbre relationnelle
Company Logo
27
Algèbre relationnelle et sql

Introduction :
•Dans le cadre d'un projet d'informatisation, la
conception d'une base de données relationnelle passe
d'abord par l'identification des objets de gestion
(Coureurs, Etapes, …) et des règles de gestion du
domaine modélisé (interviews des utilisateurs, étude
des documents manipulés, des fichiers existants, …).

Algèbre relationnelle
Company Logo
28
Algèbre relationnelle et sql

Introduction :

• Une fois énoncées et validées, ces règles nous


conduisent automatiquement à la structure du modèle
relationnel correspondant.

Algèbre relationnelle
Company Logo
29
Algèbre relationnelle et sql

Opérations de base :
1. Projection
2. Sélection
3. Jointure

Algèbre relationnelle
Company Logo
30
Algèbre relationnelle et sql

Opérations de base : Projection


Formalisme : R = PROJECTION (R1, liste des
attributs)
Exemples :

Algèbre relationnelle
Company Logo
31
Algèbre relationnelle et sql

NB :
•Cet opérateur ne porte que sur 1 relation.
•Il permet de ne retenir que certains attributs spécifiés
d'une relation.
•On obtient tous les n-uplets de la relation à
l'exception des doublons

Algèbre relationnelle
Company Logo
32
Algèbre relationnelle et sql

En Sql :
Opération PROJECTION
SELECT DISTINCT liste d'attributs FROM table ;
SELECT liste d'attributs FROM table ;

Algèbre relationnelle
Company Logo
33
Algèbre relationnelle et sql

En Sql :

Exemples :
SELECT DISTINCT Espèce FROM Champignons ;

SELECT DISTINCT Espèce, Catégorie FROM Champignons ;

•La clause DISTINCT permet d'éliminer les doublons.

Algèbre relationnelle
Company Logo
34
Algèbre relationnelle et sql

Opération SELECTION (ou RESTRICTION) :


Formalisme : R = SELECTION (R1, condition )
Exemple :

Algèbre relationnelle
Company Logo
35
Algèbre relationnelle et sql

Opération SELECTION (ou RESTRICTION) :


Formalisme : R = SELECTION (R1, condition )
•Cet opérateur porte sur 1 relation.
•Il permet de ne retenir que les n-uplets répondant à
une condition exprimée à l'aide des opérateurs
arithmétiques ( =, >, <, >=, <=, <>) ou logiques de base
(ET, OU, NON).

Algèbre relationnelle
Company Logo
36
Algèbre relationnelle et sql

Opération SELECTION (ou RESTRICTION) :


Formalisme : R = SELECTION (R1, condition )
•Tous les attributs de la relation sont conservés.
•Un attribut peut ne pas avoir été renseigné pour
certains n-uplets.
•Si une condition de sélection doit en tenir compte, on
indiquera simplement : nomattribut "non renseigné".

Algèbre relationnelle
Company Logo
37
Algèbre relationnelle et sql

Opération SELECTION (ou RESTRICTION) :


Avec Sql :
SELECT * FROM table WHERE condition ;
Exemple :
SELECT * FROM Champignons WHERE
Catégorie="Sec" ;

Algèbre relationnelle
Company Logo
38
Algèbre relationnelle et sql

Opération SELECTION (ou RESTRICTION) :


Avec Sql :

La condition de sélection exprimée derrière la clause


WHERE peut être spécifiée à l'aide :
•des opérateurs de comparaison :
•des opérateurs logiques : AND, OR, NOT
•des opérateurs : IN, BETWEEN, LIKE, IS, ALL
Algèbre relationnelle
Company Logo
39
Algèbre relationnelle et sql

Opération SELECTION (ou RESTRICTION) :


Avec Sql : Autres exemples
Soit la table:
ETUDIANT(N°Etudiant, Nom, Age, CodePostal, Ville)
SELECT *
FROM ETUDIANT
WHERE Age IN (19, 20, 21, 22, 23) ;

SELECT *
FROM ETUDIANT
WHERE Age BETWEEN 19 AND 23 ;

Algèbre relationnelle
Company Logo
40
Algèbre relationnelle et sql

Opération SELECTION (ou RESTRICTION) :


Avec Sql : Autres exemples
Soit la table:
ETUDIANT(N°Etudiant, Nom, Age, CodePostal, Ville)
SELECT *
FROM ETUDIANT
WHERE CodePostal LIKE '42%' ;
// sous Access : LIKE "42*"
SELECT *
FROM ETUDIANT
WHERE CodePostal LIKE '42___' ;
// sous Access : LIKE "42???"
Algèbre relationnelle
Company Logo
41
Algèbre relationnelle et sql

Opération SELECTION (ou RESTRICTION) :


Avec Sql : Autres exemples
Soit la table:
ETUDIANT(N°Etudiant, Nom, Age, CodePostal, Ville)
SELECT *
FROM ETUDIANT
WHERE Ville IS NULL ;
// Etudiants pour lesquels la ville n'est pas renseignée
SELECT *
FROM ETUDIANT
WHERE Ville IS NOT NULL ;
// Etudiants pour lesquels la ville est renseignée
Algèbre relationnelle
Company Logo
42
Algèbre relationnelle et sql

Opération SELECTION (ou RESTRICTION) :


Avec Sql : Autres exemples
Soit la table:
ETUDIANT(N°Etudiant, Nom, Age, CodePostal, Ville)
SELECT *
FROM ETUDIANT
WHERE Age >= ALL (SELECT Age FROM
ETUDIANT) ;
// Etudiant(s) le(s) plus âgé(s)

Algèbre relationnelle
Company Logo
43
Algèbre relationnelle et sql
Opération JOINTURE (équi-jointure : égalité) :
Formalisme : R = JOINTURE (R1, R2, condition
d'égalité entre attributs)
Exemple :

Algèbre relationnelle
Company Logo
44
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :


•Cet opérateur porte sur 2 relations qui doivent avoir
au moins un attribut défini dans le même domaine
(ensemble des valeurs permises pour un attribut).

Algèbre relationnelle
Company Logo
45
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :

•La condition de jointure peut porter sur l'égalité d'un


ou de plusieurs attributs définis dans le même
domaine (mais n'ayant pas forcément le même nom).

Algèbre relationnelle
Company Logo
46
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :

•Les n-uplets de la relation résultat sont formés par la


concaténation des n-uplets des relations d'origine qui
vérifient la condition de jointure.

Algèbre relationnelle
Company Logo
47
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :


Remarque :
Des jointures plus complexes que l'équijointure
peuvent être réalisées en généralisant l'usage de la
condition de jointure à d'autres critères de
comparaison que l'égalité (<,>, <=,>=, <>).

Algèbre relationnelle
Company Logo
48
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :


Avec Sql :
En SQL, il est possible d'enchaîner plusieurs jointures
dans la même instruction SELECT.
•En SQL de base
SELECT * FROM table1, table2, table3 , ...
WHERE table1.attribut1=table2.attribut1 AND table2.
attribut2=table3.attribut2 AND ...;

Algèbre relationnelle
Company Logo
49
50 Company Logo
Algèbre relationnelle et sql
Opération JOINTURE (équi-jointure) :
Avec Sql :
Exemple :
SELECT * FROM Produit, Détail_Commande
WHERE
[Link]=Détail_Commande.CodePrd ;

ou en utilisant des alias pour les noms des tables :

SELECT * FROM Produit A, Détail_Commande B


WHERE [Link]=[Link] ;

Algèbre relationnelle
Company Logo
51
Algèbre relationnelle et sql
Opération JOINTURE (équi-jointure) :
Avec Sql :
Exemple :
•Avec la clause INNER JOIN (jointure dite interne) à
partir du SQL2 , supportée aujourd'hui par tous les
SGBDR :

SELECT *
FROM table1 INNER
JOIN table2 ON table1.attribut1=table2.attribut1
INNER
JOIN table3 ON table2.attribut2=table3.attribut3... ;

Algèbre relationnelle
Company Logo
52
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :


Avec Sql :
Le mot clé INNER est facultatif sur la plupart des
SGBDR (sauf MS Access).

Algèbre relationnelle
Company Logo
53
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :


Avec Sql :
Le mot clé INNER est facultatif sur la plupart des
SGBDR (sauf MS Access).

Cette notation rend plus lisible la requête en


distinguant clairement les conditions de jointures,
derrière ON, et les éventuelles conditions de sélection
ou restriction, derrière WHERE.
Algèbre relationnelle
Company Logo
54
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :


Avec Sql :
De plus, l'oubli d'un ON (et donc de la condition de
jointure) empêchera l'exécution de la requête, alors
qu'avec l'ancienne notation, l'oubli d'une condition de
jointure derrière WHERE, n'empêche pas l'exécution
de la requête, produisant alors un bien coûteux
produit cartésien entre les tables !

Algèbre relationnelle
Company Logo
55
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :


Avec Sql :
Le même exemple que précédemment en utilisant
aussi les alias :
SELECT *
FROM Produit A INNER JOIN Détail_Commande
B ON [Link]=[Link] ;

Algèbre relationnelle
Company Logo
56
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :


Avec Sql :
Il est aussi possible de restreindre (ou préciser) le ou
les attributs de jointure avec USING :

SELECT *
FROM table1 INNER JOIN table2 USING
(attribut1) ;

Algèbre relationnelle
Company Logo
57
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :

•En SQL2, outre la jointure classique (dite jointure


interne), apparaissent les jointures externes .

On retiendra notamment les jointures externes


Gauche (LEFT OUTER JOIN) et Droite ( RIGHT
OUTER JOIN ).

Algèbre relationnelle
Company Logo
58
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :


Dans le cas d'une jointure externe gauche A->B, toute les lignes
de la table A sont incluses même s'il ne leur correspond pas de
ligne dans la table B.
Sur l'exemple précédent :
SELECT *
FROM Produit A LEFT OUTER JOIN Détail_Commande B
ON [Link]=[Link] ;

Algèbre relationnelle
Company Logo
59
Algèbre relationnelle et sql

Opération JOINTURE (équi-jointure) :

Tous les produits apparaissent même si certains n'ont pas fait l'objet de commande
(exemple : 588J). Les colonnes manquantes sont alors complétées par des valeurs NULL.
Algèbre relationnelle
Company Logo
60
Algèbre relationnelle et sql

Opérations ensemblistes :
❖ Union
❖ Intersection
❖ Différence
❖ Produit

Algèbre relationnelle
Company Logo
61
Algèbre relationnelle et sql

Opérations ensemblistes :
Opération UNION
Formalisme : R = UNION (R1, R2)
Exemple :

CA : Conseil Administratif
Algèbre relationnelle
Company Logo
62
Algèbre relationnelle et sql

Opérations ensemblistes :
Opération UNION
On désire obtenir l'ensemble des enseignants élus au
CA ou représentants syndicaux.

CA : Conseil Administratif
Algèbre relationnelle
Company Logo
63
Algèbre relationnelle et sql

Opérations ensemblistes :
Opération UNION
NB :
•Cet opérateur porte sur deux relations qui doivent
avoir le même nombre d'attributs définis dans le
même domaine (ensemble des valeurs permises pour
un attribut). On parle de relations ayant le même
schéma.
Algèbre relationnelle
Company Logo
64
Algèbre relationnelle et sql

Opérations ensemblistes :
Opération UNION
NB :
•La relation résultat possède les attributs des relations
d'origine et les n-uplets de chacune, avec élimination
des doublons éventuels.

Algèbre relationnelle
Company Logo
65
Algèbre relationnelle et sql

Opérations ensemblistes :
Opération UNION en Sql :

Algèbre relationnelle
Company Logo
66
Algèbre relationnelle et sql

Opération INTERSECTION
Formalisme : R
= INTERSECTION (R1, R2)

Algèbre relationnelle
Company Logo
67
Algèbre relationnelle et sql

Opération INTERSECTION

NB :
•Cet opérateur porte sur deux relations de même schéma.
•La relation résultat possède les attributs des relations d'origine et
les n-uplets communs à chacune.

Algèbre relationnelle
Company Logo
68
Algèbre relationnelle et sql

Opération INTERSECTION
Avec Sql :
•En SQL de base, plusieurs possibilités :

SELECT attribut1, attribut2, ... FROM table1


WHERE attribut1 IN (SELECT attribut1 FROM table2) ;

SELECT attribut1, attribut2, ... FROM table1


WHERE EXISTS
(SELECT * FROM table2 WHERE table1.attribut1=[Link]
but1) ;

Algèbre relationnelle
Company Logo
69
Algèbre relationnelle et sql

Opération INTERSECTION
Avec Sql :

SELECT attribut1, attribut2, ... FROM table1


WHERE attribut1 = ANY (SELECT attribut1 FROM table2) ;

•ou avec l'opérateur INTERSECT (SQL2)

SELECT attribut1, attribut2, ... FROM table1


INTERSECT
SELECT attribut1, attribut2, ... FROM table2 ;

Algèbre relationnelle
Company Logo
70
Algèbre relationnelle et sql

Opération INTERSECTION
Avec Sql :

•ou avec une équi-jointure

SELECT attribut1, attribut2, ... FROM table1 INNER


JOIN table2 ON table1.attribut1 = table2.attribut1 ;

Algèbre relationnelle
Company Logo
71
Algèbre relationnelle et sql

Opération INTERSECTION
Exemple :

SELECT n°enseignant, NomEnseignant FROM E1


WHERE n°enseignant IN (SELECT n°enseignant FROM E2) ;
ou
SELECT n°enseignant, NomEnseignant FROM E1
INTERSECT
SELECT n°enseignant, NomEnseignant FROM E2 ;

Algèbre relationnelle
Company Logo
72
Algèbre relationnelle et sql

Opération DIFFERENCE
Formalisme : R = DIFFERENCE (R1, R2)
Exemple :

Algèbre relationnelle
Company Logo
73
Algèbre relationnelle et sql

Opération DIFFERENCE
Exemple :
On désire obtenir la liste des enseignants du CA qui ne sont pas
des représentants syndicaux.

Algèbre relationnelle
Company Logo
74
Algèbre relationnelle et sql

Opération DIFFERENCE
NB :
•Cet opérateur porte sur deux relations de même schéma.
•La relation résultat possède les attributs des relations d'origine
et les n-uplets de la première relation qui n'appartiennent pas à
la deuxième.
•Attention ! DIFFERENCE (R1, R2) ne donne pas le même
résultat que DIFFERENCE (R2, R1)

Algèbre relationnelle
Company Logo
75
Algèbre relationnelle et sql

Opération DIFFERENCE
Avec sql :
•En SQL de base, plusieurs possibilités :

SELECT attribut1, attribut2, ... FROM table1


WHERE attribut1 NOT IN (SELECT attribut1 FROM table2) ;

SELECT attribut1, attribut2, ... FROM table1


WHERE NOT EXISTS
(SELECT * FROM table2 WHERE table1.attribut1=[Link]
1) ;

Algèbre relationnelle
Company Logo
76
Algèbre relationnelle et sql

Opération DIFFERENCE
Avec sql :
SELECT attribut1, attribut2, ... FROM table1
WHERE attribut1 <> ALL (SELECT attribut1 FROM table2) ;

•ou avec l'opérateur EXCEPT (SQL2) :

SELECT attribut1, attribut2, ... FROM table1


EXCEPT
SELECT attribut1, attribut2, ... FROM table2 ;

Algèbre relationnelle
Company Logo
77
Algèbre relationnelle et sql

Opération DIFFERENCE
Avec sql :
•ou encore, avec la jointure externe (SQL2) :

SELECT table1.attribut1, table1.attribut2,...


FROM table1 LEFT JOIN table2 ON table1.attribut1 =
table2.attribut1
WHERE table2.attribut1 IS NULL ;

Algèbre relationnelle
Company Logo
78
Algèbre relationnelle et sql

Opération DIFFERENCE
Avec sql :
Exemple :
SELECT n°enseignant, NomEnseignant FROM E1
WHERE n°enseignant NOT IN (SELECT n°enseignant FROM
E2) ;

Ou

SELECT n°enseignant, NomEnseignant FROM E1


EXCEPT
SELECT n°enseignant, NomEnseignant FROM E2 ;

Algèbre relationnelle
Company Logo
79
Algèbre relationnelle et sql

Opération DIFFERENCE
Avec sql :
ou encore

SELECT E1.n°enseignant, [Link]


FROM E1 LEFT JOIN E2 ON E1.n°enseignant =
E2.n°enseignant
WHERE E2.n°enseignant IS NULL ;

Algèbre relationnelle
Company Logo
80
Algèbre relationnelle et sql

Opération DIFFERENCE
Avec sql :
Pour mieux comprendre cette dernière version, voici le résultat
renvoyé par la jointure externe gauche entre E1 et E2 :

Algèbre relationnelle
Company Logo
81
Algèbre relationnelle et sql

Opération PRODUIT CARTESIEN


Formalisme : R = PRODUIT (R1, R2) ou encore

Algèbre relationnelle
Company Logo
82
Algèbre relationnelle et sql

Opération PRODUIT CARTESIEN


Formalisme : R = PRODUIT (R1, R2) ou encore

Algèbre relationnelle
Company Logo
83
Algèbre relationnelle et sql

Opération PRODUIT CARTESIEN


NB :
•Cet opérateur porte sur deux relations.
•La relation résultat possède les attributs de chacune
des relations d'origine et ses n-uplets sont formés par la
concaténation de chaque n-uplet de la première relation
avec l'ensemble des n-uplets de la deuxième.

Algèbre relationnelle
Company Logo
84
Algèbre relationnelle et sql

Opération PRODUIT CARTESIEN


Avec Sql :

SELECT * FROM table1, table2 ;

Exemple :

SELECT * FROM Etudiants, Epreuves ;

Algèbre relationnelle
Company Logo
85
Algèbre relationnelle et sql

Principe d'écriture d'une requête

La plupart des requêtes (ou interrogations) portant


sur une base de données relationnelle ne peuvent
pas être réalisées à partir d'une seule opération mais
en enchaînant successivement plusieurs opérations.

Algèbre relationnelle
Company Logo
86
Algèbre relationnelle et sql

Principe d'écriture d'une requête


Exemple :
Soient les deux tables (ou relations) suivantes :

CLIENT(CodeClient, NomClient, AdrClient, TelClient)


COMMANDE(N°Commande, Date, CodeClient*)

Remarque : les clés primaires sont soulignées et les clés


étrangères sont marquées par *

On désire obtenir le code et le nom des clients ayant commandé


le 10/06/2020
Algèbre relationnelle
Company Logo
87
Algèbre relationnelle et sql

Principe d'écriture d'une requête


Requête :
R1=SELECTION(COMMANDE, Date=10/06/2020)
R2=JOINTURE(R1, CLIENT,
[Link]=[Link])
R3=PROJECTION(R2, CodeClient, NomClient)

Algèbre relationnelle
Company Logo
88
Algèbre relationnelle et sql

Principe d'écriture d'une requête


Avec Sql :
Une même instruction SELECT permet de combiner Sélections,
Projections, Jointures.

Algèbre relationnelle
Company Logo
89
Algèbre relationnelle et sql

Principe d'écriture d'une requête


Avec Sql : Exemple :

Soient les relations suivantes :

CLIENT(CodeClient, NomClient, AdrClient, TélClient)


COMMANDE(N°Commande, Date, CodeClient*)

Remarque : les clés primaires sont soulignées et les clés


étrangères sont marquées par *

On désire obtenir le code et le nom des clients ayant commandé


le 10/06/2020 :
Algèbre relationnelle
Company Logo
90
Algèbre relationnelle et sql

Principe d'écriture d'une requête


Avec Sql : Exemple :

SELECT DISTINCT [Link], NomClient


FROM CLIENT, COMMANDE
WHERE [Link]=[Link] AND
Date='10/06/2020';

Algèbre relationnelle
Company Logo
91
Algèbre relationnelle et sql

Principe d'écriture d'une requête


Avec Sql : Exemple :

ou avec la clause INNER JOIN :

SELECT DISTINCT [Link], NomClient


FROM CLIENT INNER JOIN COMMANDE ON
[Link]=[Link]
WHERE Date='10/06/2020';

Algèbre relationnelle
Company Logo
92
Exercice d'application n°1
Soit le modèle relationnel suivant relatif à une base de données sur des
représentations musicales :
REPRESENTATION (n°représentation, titre_représentation, lieu)
MUSICIEN (nom, n°représentation*)
PROGRAMMER (date, n°représentation*, tarif)
Remarque : les clés primaires sont soulignées et les clés étrangères sont
marquées par *
Questions :
1 - Donner la liste des titres des représentations.
2 - Donner la liste des titres des représentations ayant lieu à l'opéra
Bastille.
3 - Donner la liste des noms des musiciens et des titres des
représentations auxquelles ils participent.
4 - Donner la liste des titres des représentations, les lieux et les tarifs
pour la journée du 14/09/2020.
93 Company Logo
Opérations d’agrégation

❖ Fonctions d’agrégation
❖ Calculer
❖ Regrouper et calculer

94 Company Logo
Opérations d’agrégation
Les Fonctions d'agrégation
Elles sont utilisées dans les opérateurs calculer, regrouper et
calculer .
Les fonctions statistiques de base :
Elles portent sur un ou plusieurs groupes de n-uplets et
évidemment sur un attribut de type numérique.
Somme(attribut) : total des valeurs d'un attribut
Moyenne(attribut) : moyenne des valeurs d'un attribut

95 Company Logo
Opérations d’agrégation
Les Fonctions d'agrégation
Minimum(attribut) : plus petite valeur d'un attribut
Maximum(attribut) : plus grande valeur d'un attribut

La fonction de comptage : Comptage()


La fonction de comptage donne le nombre de n-uplets d'un ou de
plusieurs groupes de n-uplets.
Il n'est donc pas nécessaire de préciser d'attribut.

96 Company Logo
Opérations d’agrégation
Les Fonctions d'agrégation : En sql
Les fonctions statistiques de base
SUM(attribut) : total des valeurs d'un attribut
AVG(attribut) : moyenne des valeurs d'un attribut
MIN(attribut) : plus petite valeur d'un attribut
MAX(attribut) : plus grande valeur d'un attribut
Remarque : les valeurs NULL sont ignorées.

97 Company Logo
Opérations d’agrégation
Les Fonctions d'agrégation : En sql
La fonction de comptage:
COUNT(*) : nombre de n-uplets
COUNT(DISTINCT attribut) : nombre de valeurs différentes de
l'attribut

98 Company Logo
Opérations d’agrégation
Opération CALCULER
SELECT fonction_agreg1(attribut1), fonction_agreg2(attribut2), ...
FROM table ;
Exemple :
SELECT SUM(Quantité*PuHt), SUM(Quantité)
FROM LIGNE_COMMANDE;

99 Company Logo
Opérations d’agrégation
Opération REGROUPER_ET_CALCULER
R=REGROUPER_ET_CALCULER(R0, att1, att2, ...,
fonction_agreg1, fonction_agreg2, ...)
Exemple :

On désire obtenir le montant total Ht de chaque bon de commande :

100 Company Logo


Opérations d’agrégation
Opération REGROUPER_ET_CALCULER
R2=REGROUPER_ET_CALCULER(LIGNE_COMMANDE,
N°BonCommande, MontantHt : Somme(Quantité*PuHt)):

•Le regroupement s'effectue sur un sous-ensemble des attributs


de la relation R0.
•La relation résultat comportera autant de lignes que de groupes
de n-uplets, les fonctions s'appliquant à chacun des groupes
séparément.
101 Company Logo
Opérations de TRI
Opération TRI
R = TRI(R0, att1↑, att2↓, ...)
Exemple :

102 Company Logo


Opérations de TRI
Opération TRI

•Le tri s'effectue sur un ou plusieurs attributs, dans l'ordre croissant ou


décroissant.
•La relation résultat a la même structure et le même contenu que la relation de
départ.

103 Company Logo


Opérations de TRI
Opération TRI : En SQL
SELECT attribut1, attribut2, attribut3, ...
FROM table
ORDER BY attribut1 ASC, attribut2 DESC, ... ;
•ASC : par ordre croissant (Ascending)
•DESC : par ordre décroissant (Descending)

104 Company Logo


Opérations de TRI
Opération TRI

Exemple :
SELECT Espèce, Catégorie, Conditionnement
FROM Champignons
ORDER BY Espèce DESC, Catégorie ASC, Conditionnement ASC ;

Remarque : par défaut le tri se fait par ordre croissant si l'on ne précise pas
ASC ou DESC.

105 Company Logo


Exercice d'application n°2
Soit le modèle relationnel suivant relatif à la gestion des notes annuelles
d'une promotion d'étudiants :
ETUDIANT(N°Etudiant, Nom, Prénom)
MATIERE(CodeMat, LibelléMat, CoeffMat)
EVALUER(N°Etudiant*, CodeMat*, Date, Note)
Remarque : les clés primaires sont soulignées et les clés étrangères sont
marquées par *
Questions :
0 – Créer BD et sql pour créer les 3 tables avec des insertions de données
1 - Quel est le nombre total d'étudiants ?
2 - Quelles sont, parmi l'ensemble des notes, la note la plus haute et la
note la plus basse ?
3 - Quelles sont les moyennes de chaque étudiant dans chacune des
matières ?
4 - Quelles sont les moyennes par matière ?
5 - Quelle est la moyenne générale de chaque étudiant ?
6 - Quelle est la moyenne générale de la promotion ?
7 - Quels
106 sont les étudiants qui ont une moyenne générale supérieure ou
Company Logo
Exercice d'application n°3
Soit le modèle relationnel suivant relatif à la gestion simplifiée des
étapes du Tour de France :
EQUIPE(CodeEquipe, NomEquipe, DirecteurSportif)
COUREUR(NuméroCoureur, NomCoureur, CodeEquipe*,
CodePays*)
PAYS(CodePays, NomPays)
TYPE_ETAPE(CodeType, LibelléType)
ETAPE(NuméroEtape, DateEtape, VilleDép, VilleArr, NbKm,
CodeType*)
PARTICIPER(NuméroCoureur*, NuméroEtape*, TempsRéalisé)
ATTRIBUER_BONIFICATION(NuméroEtape*, km,
Rang, NbSecondes, NuméroCoureur*)
Remarque : les clés primaires sont soulignées et les clés étrangères
sont marquées par *

107 Company Logo


Exercice d'application n°3
Questions :
0 – Donner sql pour créer la BD et les tables ?
1 - Quelle est la composition de l'équipe Festina (Numéro, nom
et pays des coureurs) ?
2 - Quel est le nombre de kilomètres total du Tour de France ?
3 - Quel est le nombre de kilomètres total des étapes de type
"Haute Montagne" ?
4 - Quels sont les noms des coureurs qui n'ont pas obtenu de
bonifications ?
5 - Quels sont les noms des coureurs qui ont participé à toutes
les étapes ?
6 - Quel est le classement général des coureurs (nom, code
équipe, code pays et temps des coureurs) à l'issue des 13
premières étapes sachant que les bonifications ont été intégrées
dans les temps réalisés à chaque étape ?
108 Company Logo
Merci

Mr Ahmed OUQOUR
Enseignant chercheur
(Maths-Informatique)

Algèbre relationnelle
21/10/2024
2024/2025 109

Vous aimerez peut-être aussi