1
Algèbre relationnelle Algèbre relationnelle
Witold LITWIN
2
Algèbre relationnelle 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
3
Opérateurs traditionnels 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)
4
Opérateurs ensemblistes Opérateurs ensemblistes
UNION INTERSECT DIFFERENCE
a b c
x y
a x a y b x b y c x c y
PRODUCT
5
Opérateurs relationnels Opérateurs relationnels
• Jointure (naturelle)
• Division
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 x
a y a z b x c y
x y
a
6
Opérateurs relationnels Opérateurs relationnels
• Restriction
• Projection
7
Définition syntactique 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 Clark 20 London
S# SNAME STATUS CITY
S1 Smith 20 London
S4 Jones 10 Paris
S# SNAME STATUS CITYS1 Smith 20 London
8
Propriétés Propriétés
• UNION, INTERSECT, TIMES sont associatifs et commutatifs
(A UNION B) UNION C = A UNION (B UNION C) (A UNION B) = (B UNION A)
démontre !
• Et MINUS ?
9
Restriction 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'10
Projection Projection
• 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'
11
Jointure naturelle 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 composés
• La jointure naturelle est associative et commutative ?
12
-jointures -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 ?13
Division Division
• 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#
S1 P1 S1 P2 S2 P1 S2 P3
P#
P1 P2
S#
Les fournisseurs de
S1
toutes les piècesDIVIDEBY est-t-il associatif ou commutatif ?
14
Requêtes algébriques Requêtes algébriques
(comment seraient-elles en SQL ?) (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 requête alg. est toujours +compliquée à
formuler que celle correspondant en SQL ?
15
Utilité de l'algèbre Utilité de l'algèbre
• Puissance expressive:
• 8 opérateurs de Codd permettent d'exprimer
toute expression logique de prédicat de 1-er ordre – note: seulement 5 sont primitives (lesquels ?)
• La puissance expressive de l'algèbre dite
complétude relationnelle constitue la mesure de la puissance minimale de tout LMD assertionnel
digne de ce nom
16
Utilité de l'algèbre Utilité de l'algèbre
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 ?
17
Complétude relationnelle de SQL Complétude relationnelle de SQL
expression algébrique, une expression équivalente de SQL
• Schéma de preuve:
opérateur algébrique, une expression équivalente de SQL
composition d'opérateurs algébriques, une
composition équivalente de SQL
18
• 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 ;
19
• Par induction:
tables A et B, sides expressions SQL pour A et B, alors des expressions SQL permettant à appliquer tout opérateur relationnel à A ou B
Prouve cette assertion !
20
Quelques règles de transformation Quelques règles de transformation
( ( améliorations relationnelles améliorations relationnelles ) )
• Sélections 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
21
Quelques règles d'amélioration Quelques règles d'amélioration
• Réduction de restrictions
(( A WHERE r1 ) WHERE r2 ) WHERE r3... = ( A WHERE r1 AND r2 AND r3 ...)
• Réduction de projections à la dernière
( ((( A [project 1] ) [ project 2]) [project 3] )...[project n] = A [project n]
• Etc.
22
Opérateurs additionnels Opérateurs 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 ]
23
Opérateurs additionnels 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')
24
Conclusion Conclusion
E. Codd à
son travail
25
Conclusion Conclusion
A E. Codd pour les 25 ans du
Modèle
Relationnel