Professional Documents
Culture Documents
technologiques de beja
Département d’Informatique 2010/2011
TI.2.5
Proposée par: Réalisée par:
Mme Kalai Kalai Oussama
Ben yahya Heithem
Rahma
Algèbre relationnelle
Proposée par E. Codd, 1969
Utilisée en général à l'intérieur de tout SGBD
relationnel
Un LMD algébrique est possible, mais en
général peu commode pour l'homme
On préfère les requêtes SQL, QUEL, QBE...
◦ celles-ci sont traduites en expressions algébriques
+ procedurales donc + faciles à optimiser par des
transformations syntaxiques
Opérateurs traditionnels
Opérateurs ensemblistes:
UNION, INTERSECT, DIFFERENCE, TIMES
Ces opérateurs sont reformulés
spécifiquement pour le modèle relationnel
Opérateurs relationnels spécifiques
RESTRICT, PROJECT, JOIN, DIVIDE
Les expressions algébriques transforment
des tables en une table (propriété de
fermeture)
UNION INTERSECT PRODUCT
DIFFERENCE
a x a x
b y a y
c b x
b y
c x
c y
Opérateurs ensemblistes
a1 b1 c1
Jointure a1 b1 c1 b1 a1 b1 c2
(naturelle) a2 b1 c2 b1 a2 b1 c1
a3 b2 c3 b2 a2 b1 c2
a3 b2 c3
Division
ax x a
ay y
az
bx
Opérateurs relationnels
cy
Restriction
Projection
Opérateurs relationnels
Définition syntactique
A TIMES B
Pour les 3 autres, A et B doivent
être union-compatibles:
Mêmes attributs et dans le même ordre
Le résultat a les mêmes attributs
A UNION B
A INTERSECT B
A MINUS B S# SNAME STATUS CITY
S1 Smith 20 London
S4 Jones 10 Paris
Et MINUS ?
Propriétés
Restriction
A WHERE X theta Y
theta est un opérateur de comparaison
WHERE X theta Y est la condition de
restriction
un tuple t de A est sélectionné ssi WHERE
X theta Y (t) = 'vrai'
Y = 'littéral' est aussi possible
A WHERE booléen - idem
formellement on procède en fait par les
opérateurs ensemblistes, ex.
A WHERE c1AND c2 = (A WHERE c1) INTERSECT
(A WHERE c2)
S WHERE CITY = 'Paris' AND STATUS > '10'
A [X, Y,...Z] est une projection de A sur les
attributs énumérés, tous distincts
A sans liste est une projection d'identité
A [ ] est une projection nulle
Exemples
S
S [S#, CITY]
(S WHERE STATUS = 10 ) [S#, CITY]
(S WHERE STATUS = 10 ) [S#, CITY] WHERE CITY =
'Paris'
Projection
La jointure A JOIN B de deux tables
A (X, Y) et B (Z, Y)
est la table C avec les attributs :
C (X, Y, Z)
et les tuples (X:x, Y:y, Z:z ) tels que (x, y)
est dans A et (y, z) est dans B
X, Y, Z peuvent être composés
La jointure naturelle est associative et
commutative ?
Jointure naturelle
table C égale à :
C = ( A TIMES B ) WHERE X Y
est la jointure de tables A(X,...) et B (Y,...)
Est-ce
-jointures
que la jointure est associative et commutative ?
Table C ( X ) notée:
A DIVIDEBY B
est une division de tables A (X, Y) et B
(Y) ssi C contient tous les tuples ( x )
tels que
( y ) B , ( x, y ) A S# P#
P# S#
S1 P1
P1 S1
Les fournisseurs de S1 P2
P2
toutes les pièces S2 P1
S2 P3
Division
DIVIDEBY est-t-il associatif ou commutatif ?
Technique de choix pour l'implémentation
Il n'y a que 8 opérateurs
Ces opérateurs sont faciles à implementer
Leur propriétés permettent de transformer
les expressions en +efficaces à évaluer, en
général
(( S JOIN SP ) WHERE P# = 'P2' ) [SNAME] =
( S JOIN ( SP WHERE P# = 'P2' )) [SNAME]
pourquoi la 2-ème expression semble plus efficace ?
Utilité de l'algèbre
( EXTEND P ADD 'Weight in Gr' ,
(WEIGHT * 454 ) AS WEIGHT1 )
WHERE WEIGHT1 > 1000 ;
Opérateurs additionnels
Division généralisée
La division de A (X, Y) par B (X, Z) est
C ( X, Z) où tout sous-tuple C (X:x)
est le tuple de la division relationnelle
et vice versa
Jointure externe
Assignation (pour mises à jour)
S := S UNION (( S# : 'S6', SNAME : 'Baker')
S := S MINUS ( S WHERE CITY = 'Paris')
Opérateurs additionnels
A E. Codd
pour les 30
ans du Modèle
Relationnel
L’algèbre
relationnelle est
plus
opérationnelle;
elle est utile
comme
représentation
interne des plans
d’évaluation des
requêtes.
Conclusion