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

Algèbre relationnelle

  • Upload
    shalom

  • View
    29

  • Download
    0

Embed Size (px)

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

Citation preview

Page 1: Algèbre relationnelle

1

Algèbre relationnelleAlgèbre relationnelle

Witold LITWIN

Page 2: Algèbre relationnelle

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

Page 3: Algèbre relationnelle

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)

Page 4: Algèbre relationnelle

4

Opérateurs ensemblistesOpérateurs ensemblistes

UNION INTERSECT DIFFERENCE

abc

xy

a xa yb xb yc xc y

PRODUCT

Page 5: Algèbre relationnelle

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

Page 6: Algèbre relationnelle

6

Opérateurs relationnelsOpérateurs relationnels

• Restriction

• Projection

Page 7: Algèbre relationnelle

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

Page 8: Algèbre relationnelle

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 ?

Page 9: Algèbre relationnelle

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'

Page 10: Algèbre relationnelle

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'

Page 11: Algèbre relationnelle

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 ?

Page 12: Algèbre relationnelle

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 ?

Page 13: Algèbre relationnelle

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 ?

Page 14: Algèbre relationnelle

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 ?

Page 15: Algèbre relationnelle

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

Page 16: Algèbre relationnelle

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 ?

Page 17: Algèbre relationnelle

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

Page 18: Algèbre relationnelle

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 ;

Page 19: Algèbre relationnelle

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 !

Page 20: Algèbre relationnelle

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

Page 21: Algèbre relationnelle

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.

Page 22: Algèbre relationnelle

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]

Page 23: Algèbre relationnelle

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')

Page 24: Algèbre relationnelle

24

ConclusionConclusion

E. Codd à son travail

Page 25: Algèbre relationnelle

25

ConclusionConclusion

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

Page 26: Algèbre relationnelle

26

FINFIN

Page 27: Algèbre relationnelle

27