La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Algèbre relationnelle Witold LITWIN. 2 Algèbre relationnelle Proposée par E. Codd, 1969 Utilisée en général à l'intérieur de tout SGBD relationnel Un.

Présentations similaires


Présentation au sujet: "1 Algèbre relationnelle Witold LITWIN. 2 Algèbre relationnelle Proposée par E. Codd, 1969 Utilisée en général à l'intérieur de tout SGBD relationnel Un."— Transcription de la présentation:

1 1 Algèbre relationnelle Witold LITWIN

2 2 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 3 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 4 Opérateurs ensemblistes UNION INTERSECT DIFFERENCE abcabc xyxy a x a y b x b y c x c y PRODUCT

5 5 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 xyxy a

6 6 Opérateurs relationnels Restriction Projection

7 7 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 Smith20 London S4 Clark20 London S# SNAME STATUS CITY S1 Smith20 London S4 Jones10 Paris S# SNAME STATUS CITY S1 Smith20 London

8 8 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 9 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 10 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 11 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 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 13 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# S1 Les fournisseurs de toutes les pièces DIVIDEBY est-t-il associatif ou commutatif ?

14 14 Requêtes algébriques (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 15 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 16 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 17 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 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 19 Par induction: tables A et B, si des expressions SQL pour A et B, alors des expressions SQL permettant à appliquer tout opérateur relationnel à A ou B Prouve cette assertion !

20 20 Quelques règles de transformation (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 21 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 22 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 23 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 24 Conclusion E. Codd à son travail

25 25 Conclusion A E. Codd pour les 25 ans du Modèle Relationnel

26 26 FIN

27 27


Télécharger ppt "1 Algèbre relationnelle Witold LITWIN. 2 Algèbre relationnelle Proposée par E. Codd, 1969 Utilisée en général à l'intérieur de tout SGBD relationnel Un."

Présentations similaires


Annonces Google