Algèbre relationnelle

27
1 Algèbre relationnelle Algèbre relationnelle Witold LITWIN

description

Algèbre relationnelle. Witold LITWIN. 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... - PowerPoint PPT Presentation

Transcript of Algèbre relationnelle

1

Algèbre relationnelleAlgèbre relationnelle

Witold LITWIN

2

Algèbre relationnelleAlgè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 traditionnelsOpé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écifiquesRESTRICT, PROJECT, JOIN, DIVIDE

• Les expressions algébriques transforment des tables en une table (propriété de fermeture)

4

Opérateurs ensemblistesOpérateurs ensemblistes

UNION INTERSECT DIFFERENCE

abc

xy

a xa yb xb yc xc y

PRODUCT

5

Opérateurs relationnelsOpérateurs relationnels

• Jointure (naturelle)

• Division

a1 b1a2 b1a3 b2

c1 b1c2 b1c3 b2

a1 b1 c1a1 b1 c2a2 b1 c1a2 b1 c2a3 b2 c3

a xa ya zb xc y

xy

a

6

Opérateurs relationnelsOpérateurs relationnels

• Restriction

• Projection

7

Définition syntactiqueDé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 CITYS1 Smith 20 LondonS4 Clark 20 London

S# SNAME STATUS CITYS1 Smith 20 LondonS4 Jones 10 Paris

S# SNAME STATUS CITYS1 Smith 20 London

8

PropriétésProprié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

RestrictionRestriction• 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

ProjectionProjection

• 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 naturelleJointure 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

DivisionDivision• 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 P1S1 P2S2 P1S2 P3

P#P1P2

S#S1

Les fournisseurs de toutes les pièces

DIVIDEBY est-t-il associatif ou commutatif ?

14

Requêtes algébriquesRequê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èbreUtilité 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èbreUtilité de l'algèbre

Technique de choix pour l'implémentation

Il n'y a que 8 opérateurs

Ces opérateurs sont faciles à implementerLeur 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 SQLComplé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 BSELECT * FROM A B ;

• A WHERE pSELECT * 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 transformationQuelques règles de transformation((améliorations relationnellesaméliorations relationnelles))

• Sélections d'abordA 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 normaleWHERE 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éliorationQuelques 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 additionnelsOpé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 additionnelsOpé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

ConclusionConclusion

E. Codd à son travail

25

ConclusionConclusion

A E. Coddpour les 25 ans du Modèle Relationnel

26

FINFIN

27