• Aucun résultat trouvé

Cours algèbre relationnelle avec le langage SQL – Cours et formation gratuit

N/A
N/A
Protected

Academic year: 2022

Partager "Cours algèbre relationnelle avec le langage SQL – Cours et formation gratuit"

Copied!
27
0
0

Texte intégral

(1)

1

Algèbre relationnelle Algèbre relationnelle

Witold LITWIN

(2)

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)

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)

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)

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)

6

Opérateurs relationnels Opérateurs relationnels

• Restriction

• Projection

(7)

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 CITY

S1 Smith 20 London

(8)

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)

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)

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)

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)

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 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èces

DIVIDEBY est-t-il associatif ou commutatif ?

(14)

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)

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 ordrenote: 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 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 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 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)

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)

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)

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)

24

Conclusion Conclusion

E. Codd à

son travail

(25)

25

Conclusion Conclusion

A E. Codd pour les 25 ans du

Modèle

Relationnel

(26)

26

FIN FIN

(27)

27

Références

Documents relatifs

Le modèle des classes d’UML saisit la structure statique d'un système en montrant les objets dans le système, les relations entre les objets, les attributs et

Concrètement, qu'est ce que fait cette requête : elle sélectionne langue_nom et ouvrage_titre, dans t_langues à laquelle elle ajoute les données de la table t_ouvrage où la langue

 Exemple 1 : Clé primaire comme contrainte de table pour Produit (Numprod, Desprod, Couleur, Poids, Qte_stk, Qte_seuil,

ALTER TABLE Avion ENABLE CONSTRAINT pk_Avion USING INDEX (CREATE UNIQUE INDEX pk_Avion ON Avion (immat));. ALTER TABLE Avion ENABLE

La figure 11.3 montre le diagramme bloc d'un circuit d'affichage multiplexé à quatre chiffres. Notez la présence d'un seul décodeur DCB pour les quatre afficheurs. Le compteur à 2 bits

Définition : opération entre deux relations n’ayant pas d’attributs de même nom, qui retourne une relation ayant pour schéma

La projection de R1 sur une partie de ses attributs {A1, A2, ...} produit une relation R2 dont le schéma est restreint aux attributs mentionnés en opérande, comportant les

3) Le GROUP BY consiste d'abord en un ORDER BY : les tuples restants sont triés selon les valeurs croissantes de la liste des attributs du group by ; ca génère des sous-ensembles. 4)