Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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)
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
Requtes algbriques
(comment seraient-elles en SQL ?)
(( S JOIN SP ) WHERE P# = 'P2' ) [ SNAME]
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
A UNION B
SELECT * FROM A UNION SELECT * FROM B ;
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
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