Vous êtes sur la page 1sur 16

Chapitre VI : Le langage de manipulation de données algébrique

1. Introduction
Le modèle relationnel a été à l'origine proposé avec deux langages de manipulation de données
(LMDs) de base, l'algèbre relationnelle et le calcul des tuples, équivalents en puissance et qui ont
fixé l'ensemble des fonctions que tout LMD relationnel doit offrir. A partir de ces deux langages,
d'autres LMDs ont pu être définis, qui sont plus conviviaux pour les utilisateurs. En plus des
fonctions de l'algèbre ou du calcul, ces LMDs offrent généralement des possibilités de mise à jour
de la base de données, et d'emploi, dans les requêtes, d'expressions arithmétiques et de fonctions
d'agrégation telles que cardinalité, somme, minimum, maximum et moyenne. On dit d'un LMD qu'il
est complet s'il offre au moins les mêmes fonctions que l'algèbre ou le calcul relationnel.
L'intérêt de l'algèbre relationnelle est multiple:
 L'algèbre a identifié les opérateurs fondamentaux d'utilisation d'une base de données
relationnelle.
 Ces opérateurs ont défini les principales fonctions à optimiser dans les SGBD relationnels;
 L'algèbre a donné naissance à des LMDs pour les utilisateurs. C'est le cas d’ISBL, qui a été
développé par IBM en habillant l'algèbre d'une syntaxe plus agréable.
Un autre type de LMD est constitué des langages issus du calcul des prédicats de la logique du
premier ordre. Deux adaptations de ce calcul au modèle relationnel ont été proposées, qui toutes
deux ont conduit à des langages utilisateurs:

 Le calcul des tuples, qui a donné naissance au LMD QUEL du SGBD relationnel Ingres,
 Le calcul des domaines qui a donné naissance à des LMD de type graphique dont QBE,
proposé par IBM.
Les langages de type prédicatif sont actuellement très prisés par les utilisateurs. Une requête
exprimée dans un tel langage, spécifie par des prédicats uniquement les caractéristiques du résultat
qu'elle veut obtenir (c'est-à-dire, la définition du résultat désiré). Tandis que la même requête
exprimée dans un langage algébrique, spécifie un enchaînement d'opérations conduisant au résultat
désiré (c'est-à-dire, comment construire le résultat à partir des relations de la base de données).
Dans ce cours, nous étudierons successivement deux types de langages.

2. L’algèbre relationnelle
A. Notion:
L’algèbre relationnelle est un ensemble d'opérateurs qui, à partir d'une ou deux relations existantes,
créent en résultat une nouvelle relation temporaire (c'est-à-dire, qui a une durée de vie limitée,
généralement la relation est détruite à la fin du programme utilisateur ou de la transaction qui l'a
créé). La relation résultat a exactement les mêmes caractéristiques qu'une relation de la base de
données, et peut donc être manipulée de nouveau par les opérateurs de l'algèbre.
Formellement l'algèbre comprend:
Cinq opérateurs de base: sélection, projection, union, différence et produit,
 Un opérateur syntaxique, renommé, qui ne fait que modifier le schéma et pas les tuples.
A partir de ces opérateurs, d'autres opérateurs ont été proposés qui sont équivalents à la composition
de plusieurs opérateurs de base. Ces nouveaux opérateurs, appelés opérateurs déduits, sont des
raccourcis d'écriture, qui n'apportent aucune fonctionnalité nouvelle, mais qui sont pratiques pour
l'utilisateur lors de l'écriture des requêtes. Nous présentons dans cette partie les opérateurs déduits
les plus fréquents: intersection, jointure naturelle, thêta jointure et division.
Les opérateurs de l'algèbre peuvent être regroupés en deux classes:

UTMB SEDDIKI.N Page -25-


Chapitre VI : Le langage de manipulation de données algébrique

 Les opérateurs provenant de la théorie mathématique sur les ensembles (applicables car
chaque relation est définie comme un ensemble de tuples): union, intersection, différence,
produit;
 Les opérateurs définis spécialement pour les bases de données relationnelles sélection,
projection, jointure, division et renommage.

3. Les opérations de l'algèbre relationnelle


A. L’union
L’union de deux relations R et S de même schéma est une relation T de même schéma contenant
l‘ensemble des tuples appartenant à R ou S ou aux deux relations.
On notera cette opération : T=R  S ou graphiquement avec la réunion de deux relations R et S
de même structure, est la relation T de même structure, contenant les tuples appartenant à R ou à
S, ou graphiquement :

R S

B. L’intersection
L’intersection de deux relations R et S de même schéma est une relation T de même schéma
contenant les tuples appartenant à la fois à R et S.
On notera cette opération : T=R  S, ou graphiquement :

R S

C. La différence
La différence de deux relations R et S de même schéma (dans l’ordre R-S) est une relation T de
même schéma contenant les tuples appartenant à R et n’appartenant pas à S.
On notera cette opération : T=R-S, ou graphiquement :
T

R S

UTMB SEDDIKI.N Page -26-


Chapitre VI : Le langage de manipulation de données algébrique

D. Le produit cartésien
Le produit cartésien de deux relations (de schéma quelconque) R et S, est une relation ayant pour
attribut la concaténation des ceux de R et S et dont les tuples sont toutes les concaténations d’un
tuple de R à un tuple de S.
On notera cette opération : T=RxS, ou graphiquement :

X
R S

E. La projection
La projection d’une relation de schéma R(A1, A2, …..,An) sur les attributs A1, A2, …..,Ap est une
relation R’ de schéma R’(A1, A2, …..,Ap) dont les tuples sont obtenus par élimination des valeurs
des attributs de R n’appartenant pas à R’ et par suppression des tuples en double.
On notera cette opération : R’=  (A1, A2, …..,Ap)[R], ou graphiquement :

R’

A1, A2, …..,Ap

R
Remarque: le résultat est un ensemble de tuples sans double, c'est-à-dire que si la projection crée
des tuples en double - cas d'une projection éliminant tous les identifiants de R - ces doubles sont
supprimés automatiquement.

F. La sélection (restriction)
L’opération de sélection consiste de sélectionner dans une relation, l’ensemble des tuples
satisfaisant une condition donnée appelée ‘qualification’.
On notera cette opération : R’=R[Q]. Le résultat d’une sélection sur une relation est une relation
de même structure contenant seulement les tuples vérifiant certaines propriétés, dites ‘critères de
sélection’
Les critères de sélections sont : <attribut><opérateur><valeur>
Les opérateurs sont : <,  , >,  , <>, AND, OR, NOT
Exemple : ville = ‘Béchar
Graphiquement on a :

UTMB SEDDIKI.N Page -27-


Chapitre VI : Le langage de manipulation de données algébrique

R’

R
G. La jointure
La jointure de deux relations R et S selon une condition Q est l’ensemble des tuples du produit
cartésien RxS satisfaisant la condition Q.
On notera cette opération : T=RxS[Q] ou T=R QS, ou graphiquement :

R
S

On appelle équi-jointure une jointure où la sélection se fait selon un critère d’égalité entre un
attribut de la première relation et un attribut de la seconde relation.

On appelle Jointure Naturelle, une équi-jointure sur des attributs portant le même nom dans la
première relation et la deuxième relation. La jointure naturelle est l’opérateur de jointure le plus
caractéristique de l’algèbre relationnelle.

H. La division
Le quotient 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 tuples qui
concaténés à chacun des tuples de S donne toujours un tuple de R.
On notera cette opération : DIV(R,S) ou T=R  S, ou graphiquement :

UTMB SEDDIKI.N Page -28-


Chapitre VI : Le langage de manipulation de données algébrique

R S

4. Composition d’opérations
Il est possible de composer la plupart des questions que l’on peut poser à une base de données
relationnelles, avec les opérations de base successivement enchaînées sur des relations. En effet, les
questions peuvent être exprimées à l’aide de succession des opérations : union, différence, jointure,
restriction, projection, …etc. La représentation graphique de ces opérations permet de composer des
arbres d’opérations relationnelles (voir FIG.IV.1).

A. Arbre Algébrique
Arbre représentant une question dont les nœuds terminaux représentent les relations le nœud racine
est le résultat d’une question, et les arcs sont les flux de données entre les opérations.

Plusieurs arbres représentent une même question, selon l’ordre choisi des opérations. Une méthode
de génération simple d’un arbre consiste à prendre les prédicats de qualification dans l’ordre où ils
apparaissent, et à leur associer l’opération relationnelle correspondante, puis à terminer par une
projection finale pour obtenir le résultat.

Exemple:
Soit la base de données composée des relations suivantes :
Etudiant (N°etud, nom, prénom)
Module (N°mod, intitule)
Examen (N°etud, N°mod, note)

Pour répondre à la question suivante ‘nom et prénom de tous les étudiants ayant obtenu une note
supérieure à 10 dans le module numéro N’, on peut concevoir l’arbre des opérations suivant :

UTMB SEDDIKI.N Page -29-


Chapitre VI : Le langage de manipulation de données algébrique

Nom, prénom

Note>10

N°etud
Etudiant Examen
Fig.IV.1. Exemple d’arbre d’opérations relationnelles

A partir d’un arbre algébrique, il est possible de générer un plan d’exécution en parcourant l’arbre,
des feuilles vers la racine. Une opération peut être exécutée dès que ses opérandes sont disponibles ;
ainsi, si l’opération a n’utilise pas les résultats de l’opération b, a et b peuvent être exécutées en
parallèle.

On cherche bien sûr à optimiser les temps de réponse, donc à minimiser le temps nécessaire à
l’exécution du plan. Le problème est donc de générer un plan optimal. Pour cela, il faut optimiser
simultanément :
 Le nombre d’opérations d’entrées-sorties
 Le parallélisme entre les entrées-sorties
 La taille des tampons nécessaires à l’exécution
 Le temps unité central nécessaire

L’optimisation effectuée dépend essentiellement de l’ordre des opérations qui apparaissent dans
l’arbre algébrique utilisé. Il est donc essentiel d’établir des règles permettant de générer, à partir
d’un arbre initial, tous les arbres possibles afin de pouvoir ensuite choisir celui conduisant au
meilleur plan. En fait, le nombre d’arbres étant très grand, on est amené à définir des heuristiques
pour déterminer un arbre proche de l’optimum.

B. Règles de transformation des arbres


Règle1: Commutativité des jointures

UTMB SEDDIKI.N Page -30-


Chapitre VI : Le langage de manipulation de données algébrique


R1 R2 R2 R1

Règle2: Associativité des jointures:

R3
 R1

R1 R2 R2 R3

Règle3 : Regroupement des restrictions :

Aq=

 Ap=a
Aq=b
Ap=a

R(…..Ai….)
R(…..Ai….)

Règle4 : Commutation des restrictions et projections

UTMB SEDDIKI.N Page -31-


Chapitre VI : Le langage de manipulation de données algébrique

Nécessaire si
AI n’est pas l’un
A1,..Ap des attributs
A1,..Ap
A1….Ap

 Ai=
a
Ai=a
AI est Nécessaire
si
AI n’est pas un
A1,..Ap Ai
des attributs
R(…..Ai….) A1….Ap

R(…..Ai….)

Règle5 : Commutation des restrictions et jointures :

Ai=a

 Ai=a
R2(…Bj….)

R1(…Ai…) R2(…Bj….)
R1(…Ai…)
Règle6 : Commutation des restrictions et unions ou des restrictions et différences :

ou
Ai=a

Ai=a Ai=a
ou

R1 R2
R1 R2

Règle7 : Commutation des projections et jointures :

UTMB SEDDIKI.N Page -32-


Chapitre VI : Le langage de manipulation de données algébrique

Nécessaire si
AI n’appartient
pas à A1…..Ap
A1,..Ap B1..Bq A1,..Ap B1..Bq Ou
Bj n’apparient
pas à B1……Bq

Ai Aj Ai Aj

R1(…Ai…) R2(…Bj….)
A1,..ApA B1,..BqBj

R1(…Ai…) R2(…Bj….)
Règle8 : Commutation des projections et unions :

A1,..Ap


A1,..Ap A1,..Ap

R1(…Ai…) R2(…Ai….)
R1(…Ai…) R2(…Ai….)
5. Exercices d'application:

Exercice 01:
1- Soit les deux relations suivantes :

Etudiant1 Nom Prénom Date_nais moy


Seddiki Nouredine 1972 12
Seddiki Ayemen 1973 13
Benfilali Mostefa 1970 12

Etudiant2 Nom Prénom Date_nais moy


Seddiki Nouredine Nouredine 12
Benjima Mostefa 1975 11

 Calculer Etudiant1  Etudiant2 et Etudiant1- Etudiant2


2- Soit les deux relations suivantes :

UTMB SEDDIKI.N Page -33-


Chapitre VI : Le langage de manipulation de données algébrique

Etudiant1 Nom Prénom Date_nais moy


Seddiki Nouredine 1972 12
Seddiki Ayemen 1973 13
Benfilali Mostefa 1970 12

Mention Année1 Année2 Année3


Très Bien Bien Bien

 Calculer le produit cartésien des deux relations Etudiant1et Mention


3- Soit la relation suivante :

Etudiant1 Nom Prénom Date_nais moy


Seddiki Nouredine 1972 12
Seddiki Ayemen 1973 13
Benfilali Mostefa 1972 12

 Calculer la projection de Etudiant1 sur les attributs Date_nais et moy


 Sélectionner la relation Etudiant1 par la condition Date_nais=1972
 Sélectionner la relation Etudiant1 par la condition Date_nais=1973 et moy>13

SOLUTION:
1. Union et différence
 Etudiant1Etudiant2

Etudiant1 Nom Prénom Date_nais moy


Etudiant
2
Seddiki Nouredine 1972 12
Seddiki Ayemen 1973 13
Benfilali Mostefa 1970 12
Benjima Benjima 1975 11

 Etudiant1- Etudiant2

Etudiant1- Nom Prénom Date_nais moy


Etudiant2
Seddiki Ayemen 1973 13
Benfilali Mostefa 1970 12

2. le produit cartésien des deux relations Etudiant1 et Mention

 Etudiant1×Mention

Etudiant1 Nom Prénom Date_nais moy Année1 Année2 Année3


Seddiki Nouredine 1972 12 Très Bien Bien Bien
Seddiki Ayemen 1973 13 Très Bien Bien Bien
Benfilali Mostefa 1970 12 Très Bien Bien Bien

UTMB SEDDIKI.N Page -34-


Chapitre VI : Le langage de manipulation de données algébrique

3.
 La projection de Etudiant1 sur les attributs Date_nais et moy

 (Date_nais etmoy) Date_nais Date_nais


[ Etudiant1]
1972 12
1973 13
1970 12

 La sélection de la relation Etudiant1 par la condition Date_nais =1972

Etudiant1 Nom Prénom Date_nais moy


Seddiki Nouredine 1972 12
Benfilali Mostefa 1972 12

 La sélection de la relation Etudiant1 par la condition Date_nais =1973 et moy>13 est


l'ensemble vide

Exercice 02:
Voiture (N°S, type_v, marque_v, puissance_v, couleur_v)
Personne(N°IM, nom_P, prenom_p, adresse_p)
Possède(N°IM, N°S, date, prix_Achat)
1- Quel sont les noms des personnes qui possèdent une voiture de type 308 ?
2- Donner le type et la couleur des voitures des personnes résidés à Béchar dont le prénom est
Noureddine.
3- Donner la liste des noms des personnes ayant acheté des voitures de marque Peugeot entre le
01-01-2017 et 31-10-2017 et dont le prix est inférieur à 1000000DA

SOLUTION:
1.
σ
R1  Voiture[ type=’308’]

R2  R1 Q Possede (AVEC Q= N°S)

R3  R2 Q Personne (AVEC Q= N°SS)

R4  π R3 [nom]
 L'arbre algébrique équivalent:

UTMB SEDDIKI.N Page -35-


Chapitre VI : Le langage de manipulation de données algébrique

R4

nom

R3

N°SS
R2
Personne
N°S
R1
Possède

type=’308’

2. Voiture

R1  σ Person [ Prenom=’Noureddine’ AND ville =’Béchar’]


R2  R1 Possède(AVEC Q= N°SS )
Q

R3  R Voiture(AVEC Q= N°S)
Q

R4  πR3 [type, couleur]


 L'arbre algébrique équivalent:

R4

couleur, type

R3

N°V
R2
Voiture
N°SS
R1
Possède
Prenom=’Noureddine’
AND
Ville=’Béchar’

Personne

UTMB SEDDIKI.N Page -36-


Chapitre VI : Le langage de manipulation de données algébrique

3.
R1  σ Voiture [ marque=’Peugeot’]
R2  R1 Possede (AVEC Q= N°S)
Q

R3  σ R2 [prix <1000000DA AND date  01-01-2017 AND date  31-10-2017]

R4  R3 Personne OVER N°SS (AVEC Q= N°SS)


Q

R5  π R4 [ nom]
Exercice 03:
Soit la base de données relationnelle suivante :
Etudiant(N°Insp, nom_Etud, adresse_Etud)
Enseignant(N°ens, nom_Ens, grade_Ens)
Module (Réf_Mod, intitulé_Mod, N°ens)
Inscription(N°Insp, Réf_Mod, année, appréciation)
Exprimer par l’intermédiaire des opérateurs de l’algèbre relationnelle les requêtes suivantes :
1- Donner les noms et les adresses des étudiants ayant suivi le module ‘BDD’
2- Quels sont les étudiants ayant ‘Seddiki’ comme enseignant ?
3- Donner la liste des numéros des enseignants qui enseignent au moins tous les modules qui sont
enseignés par l’enseignant N°5.
4- Donner la liste des noms des étudiants qui suivent au moins tous les modules enseignés par
‘Seddiki’.
5- Donner les numéros des étudiants qui n’ont pas passé l'examen en 2017.

SOLUTION:
σ Module [ Titre=’BDD’]
1- R1 

R2  πR1 [Réf_mod]
R3  R2 Inscription Réf_mod(AVEC Q= Réf_mod)
Q

R4  R3 Etudiant Réf_mod (AVEC Q= Réf_mod)


Q
R5  π R4 [Nom_Etud, Adresse]
σ
2- R1  Enseignant [Nom_Ens=’Seddiki’]

R2  πR1 [N°ens]

R3  R2 Module (AVEC Q= N°ens)


Q

UTMB SEDDIKI.N Page -37-


Chapitre VI : Le langage de manipulation de données algébrique

R4  πR1 [N°mod ]
R5  R4 Q Inscription (AVEC Q= N°mod)

R6  R5 Q Etudiant (AVEC Q= N°_Insp)


R7  π
R6 [Nom_Etud ]

3- R1 σ Module [N°ens=’05’ ]
R2  πR1 [Réf_°mod]

R3  πModule [N°ens, Réf_°mod]


R4  DIV R3 BY R2

σ
4- R1  Enseignant [Nom_Ens=’Seddiki’]

R2  πR1 [N°ens]

R3  R2 Module (AVEC Q= N°ens)


Q
R4  πR3 [Réf_°mod]
R5  PROJECT OVER πInscription [N°Insp, Réf_°mod ]

R4

couleur, type

R3

N°V
R2
vehicule
N°SS
UTMB SEDDIKI.N Page -38-
R1
possede
prenom=’Med’
Chapitre VI : Le langage de manipulation de données algébrique

Exercice supplémentaire:
Soit la base de données relationnelle, PUF, de schéma :
U (NU, NomU, Ville)
P (NP, NomP, Couleur, Poids)
F (NF, NomF, Statut, Ville)
PUF (NP, NU, NF, Quantité)
NP référence P.NP
NU référence U.NU
NF référence F.NF

Décrivant le fait que :


U: une usine est décrite par son numéro NU, son nom NomU, la ville Ville dans laquelle elle est
située;
P: un produit est décrit par son numéro NP, son nom NomP, sa Couleur, son Poids;
F: un fournisseur est décrit par son numéro NF, son nom NomF, son Statut (fournisseur sous-
traitant, fournisseur-client, .....), la Ville où il est domicilié;
PUF: le produit de numéro NP a été livré à l'usine de numéro NU par le fournisseur de numéro NF
dans une Quantité donnée.

Exprimer en langage algébrique les requêtes suivantes:

1) Donner le numéro, le nom et la ville de toutes les usines.

2) Donner le numéro, le nom et la ville de toutes les usines d'Alger.


o o
3) Donner les numéros des fournisseurs qui approvisionnent l'usine n 1 en produit n 1.
o
4) Donner le nom et la couleur des produits livrés par le fournisseur n 1.
o
5) Donner les numéros des fournisseurs qui approvisionnent l'usine n 1 en un produit rouge.

6) Donner les noms des fournisseurs qui approvisionnent une usine d'Alger ou d'Oran en un
produit rouge.

7) Donner les numéros des produits livrés à une usine par un fournisseur de la même ville.

UTMB SEDDIKI.N Page -39-


Chapitre VI : Le langage de manipulation de données algébrique

8) Donner les numéros des produits livrés à une usine de Londres par un fournisseur d'Alger.

9) Donner les numéros des usines qui ont au moins un fournisseur qui n'est pas de la même
ville.
o o
10) Donner les numéros des fournisseurs qui approvisionnent à la fois les usines n 1 et n 2.

UTMB SEDDIKI.N Page -40-