Vous êtes sur la page 1sur 27

Algbre relationnelle

Witold LITWIN

Algbre relationnelle
Propose par E. Codd, 1969 Utilise en gnral l'intrieur de tout SGBD relationnel Un LMD algbrique est possible, mais en gnral peu commode pour l'homme On prfre les requtes SQL, QUEL, QBE...
celles-ci sont traduites en expressions algbriques + procedurales donc + faciles optimiser par des transformations syntaxiques

Oprateurs traditionnels
Oprateurs ensemblistes:
UNION, INTERSECT, DIFFERENCE, TIMES

Ces oprateurs sont reformuls spcifiquement pour le modle relationnel

Oprateurs relationnels spcifiques


RESTRICT, PROJECT, JOIN, DIVIDE

Les expressions algbriques transforment des tables en une table (proprit de fermeture)

Oprateurs ensemblistes
UNION INTERSECT DIFFERENCE

PRODUCT

a b c

x y

a a b b c c

x y x y x y

Oprateurs relationnels
Jointure (naturelle)
a1 b1 a2 b1 a3 b2 c1 b1 c2 b1 c3 b2

a1 b1 c1 a1 b1 c2 a2 b1 c1 a2 b1 c2 a3 b2 c3
a

Division
ax ay az bx cy
5

x y

Oprateurs relationnels
Restriction

Projection

Dfinition syntactique
A TIMES B

Pour les 3 autres, A et B doivent tre unioncompatibles:


Mmes attributs et dans le mme ordre

Le rsultat a les mmes attributs


A UNION B A INTERSECT B A MINUS B S# SNAME STATUS CITY S1 Smith 20 London S4 Clark 20 London S# SNAME STATUS CITY S1 Smith 20 London S4 Jones 10 Paris

S# SNAME STATUS CITY S1 Smith 20 London

Proprits
UNION, INTERSECT, TIMES sont associatifs et commutatifs
(A UNION B) UNION C = A UNION (B UNION C) (A UNION B) = (B UNION A)

dmontre !
Et MINUS ?

Restriction
A WHERE X theta Y theta est un oprateur de comparaison WHERE X theta Y est la condition de restriction un tuple t de A est slectionn ssi WHERE X theta Y (t) = 'vrai' Y = 'littral' est aussi possible A WHERE boolen - idem formellement on procde en fait par les oprateurs ensemblistes, ex. A WHERE c1AND c2 = (A WHERE c1) INTERSECT (A WHERE c2) 9 S WHERE CITY = 'Paris' AND STATUS > '10'

Projection
A [X, Y,...Z] est une projection de A sur les attributs numrs, 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' 10

Jointure naturelle
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 composs La jointure naturelle est associative et commutative ?

11

-jointures
table C gale : C = ( A TIMES B ) WHERE X Y est la jointure de tables A(X,...) et B (Y,...)
(S TIMES SP ) WHERE S.S# = SP.S# (((S RENAME CITY AS SCITY) TIMES S ) WHERE SCITY > CITY RENAME SNAME AS SNAME1) RESTRICT WHERE SNAME1 > SNAME)

Est-ce que la jointure est associative et commutative ?


12

Division
Table C ( X ) note: 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
Les fournisseurs de toutes les pices S# S1 S1 S2 S2 P# P1 P2 P1 P3 P# P1 P2

S# S1

13

DIVIDEBY est-t-il associatif ou commutatif ?

Requtes algbriques
(comment seraient-elles en SQL ?)
(( S JOIN SP ) WHERE P# = 'P2' ) [ SNAME]

(((P WHERE COLOR = 'Red' ) [P#] JOIN SP ) [S#] JOIN S [SNAME]


(((P WHERE COLOR = 'Red' ) [P#, PNAME] JOIN SP ) [S#, PNAME] JOIN S [SNAME] (( SP [S#, P#] DIVIDEBY P [P#] ) JOIN S ) [SNAME] SP [S#, P#] DIVIDEBY ( SP WHERE S# = 'S2') [P#]

Est-ce vrai qu'une requte alg. est toujours +complique formuler que celle correspondant en SQL ? 14

Utilit de l'algbre
Puissance expressive:
8 oprateurs de Codd permettent d'exprimer toute expression logique de prdicat de 1-er ordre note: seulement 5 sont primitives (lesquels ?) La puissance expressive de l'algbre dite compltude relationnelle constitue la mesure de la puissance minimale de tout LMD assertionnel digne de ce nom
15

Utilit de l'algbre
Technique de choix pour l'implmentation
Il n'y a que 8 oprateurs Ces oprateurs sont faciles implementer Leur proprits permettent de transformer les expressions en +efficaces valuer, en gnral
(( S JOIN SP ) WHERE P# = 'P2' ) [SNAME] = ( S JOIN ( SP WHERE P# = 'P2' )) [SNAME] pourquoi la 2-me expression semble plus efficace ? 16

Compltude relationnelle de SQL


expression algbrique, une expression quivalente de SQL Schma de preuve: oprateur algbrique, une expression quivalente de SQL

composition d'oprateurs algbriques,


une composition quivalente de SQL
17


A UNION B
SELECT * FROM A UNION SELECT * FROM B ;

A (X) MINUS B (X)


SELECT * FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.x1 = B.x1 AND A.x2 = B.x2...);

A TIMES B
SELECT * FROM A B ;

A WHERE p
SELECT * FROM A WHERE p;

A [x, y.., z]
SELECT DISTINCT x,y..z FROM A ; 18


Par induction:
tables A et B, sides expressions SQL pour A et B, alors des expressions SQL permettant appliquer tout oprateur relationnel A ou B Prouve cette assertion !

19

Quelques rgles de transformation


(amliorations relationnelles) Slections d'abord
A JOIN B WHERE restriction-sur-B = A JOIN ( B WHERE restriction-sur-B ) A JOIN B WHERE restriction-sur-A AND restriction-sur-B = (A WHERE restriction-sur-A ) JOIN ( B WHERE restriction-sur-B)

Forme conjonctive normale


WHERE p OR ( q AND r) = WHERE (p OR q) AND ( p OR r)
Il suffit qu'une condition soit .FAUX pour rejeter le tuple 20

Quelques rgles d'amlioration


Rduction de restrictions
(( A WHERE r1 ) WHERE r2 ) WHERE r3... = ( A WHERE r1 AND r2 AND r3 ...)

Rduction de projections la dernire


( ((( A [project 1] ) [ project 2]) [project 3] )...[project n] = A [project n]

Etc.

21

Oprateurs additionnels
( EXTEND P ADD 'Weight in Gr' ,
(WEIGHT * 454 ) AS WEIGHT1 ) WHERE WEIGHT1 > 1000 ;

SUMMARIZE SP GROUPBY ( P# ) ADD SUM ( QTY) AS TOTQTY ( SUMMARIZE ( P WHERE COLOR = 'Red') GROUPBY ( CITY ) ADD COUNT AS N ) WHERE N > 5 ) [CITY]
22

Oprateurs additionnels
Division gnralise 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')
23

Conclusion
E. Codd son travail

24

Conclusion
A E. Codd pour les 25 ans du Modle Relationnel

25

FIN
26

27