Académique Documents
Professionnel Documents
Culture Documents
Le langage algébrique a été introduit en 1970 par CODD. Il consiste à définir la liste des opérateurs de
l’algèbre relationnelle dont les opérandes sont des relations.
Pour l’union (U), l’intersection (∩), la différence (-), les relations doivent être « union-
compatible », c’est-à-dire :
a. Union
L’opération d’intersection d’un n-uplet dans une relation peut facilement se faire avec l’opération
d’union.
L’union de deux relations R et S notée RUS est l’ensemble des tuples appartenant soit à R, soit à S,
soit à la fois à R et à S, donc RUS={t/t ϵ R OU t ϵ S}.
Exemple : Soient les relations PILOTE1 & PILOTE2 dont les tables suivent :
PILOTE2 : représente l’ensemble des pilotes numéros assurant un vol au départ de PARIS ou de TOULOUSE.
PILOTE1 U PILOTE2 : représente l’ensemble des pilotes habitants PARIS OU assurant un vol au départ de
PARIS ou de TOULOUSE.
c. La différence
La différence de deux relations R et S notée R-S est l’ensemble des tuples qui appartiennent à R
sans appartenir à S. R-S = {t/t ϵ R ET t ϵ S}. C’est une opération complémentaire de l’intersection.
L’opération de différence permet de supprimer un n-uplet dans une relation.
Exemple : En prenant les mêmes relations que précédemment, on a :
PILOTE1- PL≠ ADR PILOTE2 : PL1-PL2 représente l’ensemble des pilotes habitants PARIS
100 PARIS n’assurant pas de vol au départ de PARIS ou de TOULOUSE.
120 PARIS
d. Le produit cartésien
Le produit cartésien de deux relations R et S notées R S est l’ensemble de tous les tuples
obtenus par concaténation de tuples de R et de tuples de S. R S= {(t(r), t(s) avec t(r) ϵ R et t(s) ϵ S}. C’est un
ensemble de paires ordonnées.
Exemple : PL≠ ADR PILOTE3 et AVNO CAP AVION
103 NICE M
106 NICE AIRBUS 350
CARAC 250
Le produit cartésien n’est pas directement utilisé au niveau de l’interface algébrique. Par contre
nous verrons que deux opérateurs relationnels sont dérivés du produit cartésien.
Note : Les opérateurs UNION, INTERSECTION, DIFFERENCE peuvent être étendus à des relations qui ne sont
pas d’union compatibles (PIROTE 1981)
Ils permettent :
i. LA SELECTION
Soit Ѳ un des comparateurs <, >, ≤, ≥, =, ≠ applicables à l’attribut (ou à l’ensemble d’attribut) A et au
tuples c de la relation R. La
relation R (A Ѳ c) est l’ensemble des tuples de R pour lesquels Ѳ est vérifié entre la ou les composantes A et
le tuple c.
R (A Ѳ c) = {t/t ϵ R ET t AѲc}.
-Le tuple c pourrait être remplacé par un attribut ou un ensemble d’attributs B où A et B seraient
définis sur le(s) même(s) domaine(s). Dans ce cas, la qualification porterait sur les composants de A et de B
situés au même niveau.
-Enfin le tuple c pourrait aussi être remplacé par une valeur d’attribut (ou un groupe d’attributs).
Dans ce cas les différentes valeurs seraient placées entre guillemets.
PILOTE4 PL≠ PLNOM ADR Si nous posons c = (120, PAUL, PARIS) alors nous
100 JEAN PARIS obtiendrons :
101 PIERRE PARIS
PILOTE4(ADR=c) PL≠ PLNOM ADR
120 PAUL PARIS
130 SERGE TOUL 100 JEAN PARIS
140 MICHEL TOUL 101 PIERRE PARIS
120 PAUL PARIS
PILOTE4 (ADR=c) représente l’ensemble des pilotes ayant la même adresse que le pilote N°120.
Exemple: PILOTE4 (ADR≠’’PARIS’’) représente l’ensemble des pilotes n’habitant pas PARIS.
ii. PROJECTION
Soit R(A) une relation et un ensemble d’attribut A 1,…, An de R tel que (A1, A2,……, An) A. La projection
R (A1, A2,……, An) est la relation obtenue à partir de R(A) en éliminant de R(A) les attributs autres que ceux
spécifiés par A1, A2,……, An et en supprimant les tuples indiqués, le résultat est une relation c’est-à-dire un
ensemble sans dupliquât.
L’opérateur JOIN,
L’opérateur DIVISION.
i. Le JOIN
Soient les relations R(A,B1) et R(B2,C) avec B1 et B2 des attributs définis sur le même domaine(le JOIN a
donc une définition sémantique bien précise), soit Ѳ(un des éléments de l’ensemble{<, >, ≤, ≥, =, ≠})
applicable aux valeurs des attributs B 1 et B2 . le JOIN de R sur B2 avec S sur B2 noté comme R(B1 Ѳ B2)S ou (R
S) est la relation dont les tuples sont ceux obtenus par concaténation des tuples de R avec ceux de S pour
lesquels la relation Ѳ entre les composantes B 1 et B2 est vérifiée.
On a : R(B1 Ѳ B2)S={t/tϵR S ET t(B1) Ѳ t(B2)}
Lorsque Ѳ est l’égalité (=), l’opérateur porte le nom d’EQUI-JOIN.
L’opérateur JOIN est équivalent à un produit cartésien ( ) et suivi d’une sélection.
)
NOTE :
Exemples : Prenons : PILOTE1 PL≠ PLNOM ADR représente l’ensemble des pilotes
100 JEAN PARIS habitants PARIS.
101 PIERRE PARIS
120 PAUL PARIS
Et VOL≠ AV≠ PL≠ VOL1 représente les numéros des vols de la compagnie
IT 500 110 100 aérienne avec des numéros d’avion et de pilotes
IT 501 130 100 correspondants.
IT 503 110 100
IT 504 110 120
IT 506 120 120
IT 507 130 110
1.) PILOTE1(PL≠=PL≠)VOL1
CAS PARTICULIERS
#. Sélection
Une relation constante est une relation comportant ou comprenant un seul tuple (éventuellement
réduit à une seule valeur). L’opération SELECTION est un cas particulier du JOIN avec une relation
constante.
#. Join Naturel
Notons que tous les attributs composants les relations apparaissent dans le JOIN. Dans l’EQUI-JOIN
par exemple, il y a deux colonnes identiques. Lorsque nous supprimons l’attribut de la deuxième relation,
on parle de ‘’JOIN NATUREL’’. Le JOIN NATUREL est donc un cas particulier de l’EQUI-JOIN naturel avec une
relation constante.
ii. La DIVISION
Nous allons nous limiter au cas de la division d’une relation binaire R par une relation unaire S.
Définition 1
Soit R(B, S) une relation binaire et S(A 2) une relation unaire où A 1 et A2 sont des attributs sur le même
domaine, alors la division de R par S est le sous ensemble des éléments de R(B) dont le produit cartésien
avec S est inclus dans R.
(2) correspond à la définition intuitive de PIROTE en 1981 : «R(B,A1)÷S(A2) est l’ensemble des tuples t
de R(B) tel que pour chaque élément s de S, la concaténation de t et de s soit un tuple de R ».
Introduisons la notion de « l’ensemble image » d’un attribut. Soit R(x, y) une relation binaire. On
appelle ensemble image de x noté g R(x), l’ensemble {y, t(x,y)ϵR}.
En notant R(A1÷A2)S, la division de R par S sur les attributs respectifs A 1 et A2 (définis sur le même
domaine), et Ᾱ1 les attributs complémentaires de A1 dans R, on a :
Définition 2
La relation résultante comprend la projection des tuples de la relation dividende R sur les attributs
complémentaires des attributs de division de A1 qui satisfont la division.
La division par une relation constante est équivalente à une sélection suivie d’une projection sur le
complément du diviseur.
Les trois relations du schéma sont en jeu dans cette requête. L’attribut AV≠ permet de faire le lien
entre les relations AVION et VOL ; l’attribut PL≠ permet de faire le lien entre les relations PILOTE et VOL
(AV≠ et PL≠ sont des attributs de ‘’qualification’’).
VOL1 = VOL (AV≠, PL≠) « projection de la relation VOL sur les attributs de liaison »
AV1 = AVION (AV≠) « projection ; AV1 contient tous numéros d’avions »
PL1 = PILOTE (PL≠, PLNOM) « projection »
PL2 = VOL1 (AV≠÷ AV≠) AV1 « division de VOL1 par AV1 pour avoir les numéros des pilotes qui
conduisent tous les avions »
PL3 = PL2 (PL≠÷PL≠) PL1 « équi-join qui permet d’avoir les noms des pilotes associés aux numéros des
pilotes qui nous intéressent »
PROJECTION SELECTION
DIVISION PRODUIT
CARTESIEN
Les langages prédicatifs sont fondés sur le calcul des prédicats du premier ordre. Pour cette
raison, nous commencerons par effectuer un rappel sur la logique mathématique.
b. Interprétation
Soit A1, A2,……,An les n atomes distincts apparaissant dans une formule W. Une
interprétation de W est une assignation de « valeur de vérité » (Vrai ou faux) à A1, A2,……,An. Il
existe alors 2n interprétations possibles de W.
c. Prédicat
Soit un ensemble X dont on désigne par x la variable de parcours. On appelle P(x) une
forme d’énoncé qui devient une proposition lorsque x est remplacé par un élément donné a ϵ X.
Exemple : « x est un animal » est un exemple de prédicat à une variable. Ce prédicat devient une
proposition lorsqu’on donne à x une valeur spécifique.
P(CHIEN) = VRAI
P(MIKE) = FAUSSE
« x est un animal » = Q(x) et on a Q(JEAN) = VRAI
Cette définition peut être généralisé à n variables : P (x1, …, xn) est un prédicat à n
variables dont les valeurs sont des variables xi, i ϵ (1,n) parcourant les ensembles Xi, i ϵ [1,n].
Si quel que soit (a1, …, an), ai ϵ Xi, i ϵ [1,n], P(a1, …, an) est une proposition.
Une variable est libre dans une formule A si A contient x et A ne renferme aucun quantificateur
contenant x.
Une wff est dite ouverte s’il existe des variables libres.
Une wff est die fermée s’il n’existe pas de variables libres.
PIERRE aime JEANNE est une proposition à partir de laquelle on peut construire un prédicat
à deux arguments AIME (x, y) dont une valeur AIME (PIERRE, JEANNE).
PIERRE conduit l’avion n°100 entre PARIS et TOULOUSE sur le vol IT500 entre 19h et 20H
oVOL(x, y, z, t, u, v, w) dont une valeur est VOL(IT500, PIERRE, 100, PARIS, TOULOUSE,
19, 20) .
Exemple2 : De données globales et de wff associées :
Tout le monde aime EDITH o pour tout x (PERSONNE)(x) AIME(x, EDITH) ce qui se
traduit comme suit : pour tout x , si x est une personne alors x aime EDITH.
Pour tout x AIME (x, EDITH) ceci est incorrect sauf si x est d’un type prédéfini.
Tous les hommes d’origine o pour tout x (PERSONNE(x) et CHINOIS(x) =>
EXHUBERANT(x)) chinoises sont exubérants.
SELECT *
FROM PILOTE Px
WHERE SAL > (SELECT AVG(SAL)*1,1 FROM Px)
Px est une variable relation synonyme de PILOTE, utilisé dans un mapping interne.
Les opérations ensemblistes classiques UNION, INTERSECTION, DIFFERENCE, INCLUSION
peuvent être exprimé en SQL.
Exemple2 : Quels sont les numéros des pilotes qui ne sont pas en service ?
(SELECT PL‡
FROM PILOTE) => ensemble des numéros de pilote de la compagnie (pris dans la relation PILOTE)
MINUS (différence)
(SELECT PL‡
FROM VOL) => ensemble des numéros des pilotes qui sont en service
SQL est le seul langage relationnel à avoir intégré la recherche hiérarchique intra-relation
qui correspond à la fermeture transitive (possibilité de déduire le couple [a, c] à partir [a, b] et [b,
c]).
La recherche hiérarchique dans une relation est utilisée par la classe CONNECT BY (nœud
courant) utilisée conjointement avec START WITH (qualification) et le mot réservé PRIOR (nœud
précédent).
Exemple3 : Quels sont tous les vols desservis au départ de PARIS après 16 ?
Les attributs VD et VA de VOL constituent une arborescence de valeurs.
SELCET VA
FROM VOL
CONNECT BY VA
PRIOR VD AND HD>16
START WITH VD = ‘’ PARIS ‘’
COUNT (comptage)
SUM (somme)
AVG (moyenne)
MAX (maximum)
MIN (minimum)
Les fonctions bibliothèques ci-dessus peuvent apparaître soit dans la clause SELECT soit
dans la clause WHERE du mapping.
Exemple : Quelle est la moyenne des capacités des avions localisés à PARIS ?
SELCET AVG (CAP)
FROM AVION
WHERE LOC = ‘’PARIS‘’
La notion de partitionnement aussi intégré dans SQL; dans ce cas le mapping est de la
forme suivante:
SELECT (attribut cible)
FROM (relation cible)
WHERE
GROUP BY (attribut de partitionnement) < la relation est partitionnée en page groupé
ayant la même valeur d’attribut >
HAVING (qualification) < cas particulier de WHERE appliqué aux groupes et non aux tuples
NOTE : la clause WHERE permet l’élimination des tuples ne satisfaisant pas la qualification alors
que la clause HAVING permet l’élimination de groupe. WHERE est toujours évalué avant le
partitionnement.
Exemple : Quels sont les numéros de pilotes parmi 100, 110, 120, 130 qui assurent plus de 03 vols
avec le nombre de vols assurées ?
SELECT PL‡, COUNT(*)
FROM VOL
WHERE PL‡ IN(100, 110, 120, 130)
GROUP BY PL‡
HAVING COUNT (*) > 3
3. Afficher les enregistrements contenant des données uniques dans les champs spécifiques.
SELECT DISTINCT a.PLNOM, b.AV‡, b.PL‡
FROM PILOTE.a, VOL.b
WHERE a.PL‡ = b.PL‡
7. Afficher tous les enregistrements de la table pilote ayant un nom PILOTE commençant par la
lettre majuscule P et de longueur quelconque.
SELCET *
FROM PILOTE
WHERE PLNOM LIKE ‘’P%’’
9. Afficher les noms de tous les pilotes de la table PILOTE en lettre majuscule et appellera la
colonne de sortie L pilotes.
SELECT UPER (PLNOM) AS Lpilotes
FROM PILOTE