Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4,...

21
base Management Systems 3ed, R. Ramakrishnan and J. Gehrke Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2

Transcript of Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4,...

Page 1: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Algèbre Relationnelle

Chapitre 4, Sections 4.1 – 4.2

Page 2: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 2

Langages de Requêtes relationnels

Langages de requêtes: Permettent la manipulation et l’extraction des données d’une base de données.

Le modèle relationnel supporte de simples et puissants LRs: Solide fondation formelle basée sur la logique. Permet beaucoup d’optimisation.

Langages de requêtes != langages de programmation! Les LRs ne sont pas équivalents à la machine de Turing. Ils ne sont pas destinés à être utilisés pour des calculs

complexes. Ils supportent un accès facile et efficient à de larges

ensembles de données.

Page 3: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 3

Langage de Requêtes Relationnels (Suite) Deux langages de requêtes à caractère

mathématique forment le soubassement des langages réels comme SQL et de l’implémentation de ceux-ci : Algèbre relationnelle: Plus opérationnelle, très

utile pour représenter les plans d’exécution. Calcul relationnel: Permet aux utilisateurs de

décrire ce qu’ils veulent, plutôt que la manière dont ce qu’ils veulent doit être calculé. (Non opérationnel, déclaratif.)

Page 4: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 4

Préliminaires

Une requête est appliquée aux instances relationnelles et son résultat est aussi une instance relationnelle. Les schémas des relations d’entrée d’une requête sont

fixes (la requête exécutera cependant indépendamment de l’instance!)

Le schéma du résultat d’une requête donnée est aussi fixe! Il est déterminé par la définition des éléments du langage des requêtes.

Notation positionnelle vs. notation nominale: La notation positionnelle est plus facile à utiliser dans les

définitions formelles. La notation nominale est plus lisible. Les deux notations sont utilisées dans SQL.

Page 5: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 5

Exemple d’Instances

sid sname rating age

22 dustin 7 45.0

31 lubber 8 55.558 rusty 10 35.0

sid sname rating age28 yuppy 9 35.031 lubber 8 55.544 guppy 5 35.058 rusty 10 35.0

sid bid day

22 101 10/10/9658 103 11/12/96

R1

S1

S2

Nous utilisons les relations “Sailors” et “Reserves” pour nos exemples.

Nous utiliserons les notations positionnelles et nominales selon les cas et assumeront que les noms des attributs des résultats des requêtes seront hérités des noms des attributs des relations d’entrée des requêtes.

Page 6: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 6

Algèbre Relationnelle Opérations de base:

Sélection ( ) Sélectionne un sous-ensemble des lignes d’une relation.

Projection ( ) Efface des colonnes d’une relation. Produit Cartésien ( ) Permet de combiner deux relations. Différence ( ) Contient des tuples de la relation 1, moins ceux de

la relation 2. Union ( ) Contient les tuples des relations 1 et 2.

Opérations additionnelles: Intersection, join, division, « renaming »: Pas essentielles; utiles.

Les opérations retournant une relation, elles peuvent être composées! (L’algèbre est close.)

Page 7: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 7

Projectionsname rating

yuppy 9lubber 8guppy 5rusty 10

sname rating

S,

( )2

age

35.055.5

age S( )2

Efface les attributs qui ne sont pas dans la liste de projection.

Le Schéma du résultat contient exactement les attributs de la liste de projection, avec les mêmes noms qu’ils portaient dans la seule relation d’entrée de la projection.

L’opérateur de projection doit éliminer les duplicata! (Pourquoi?) Note: les systèmes réels

n’éliminent pas les duplicata, à moins que l’utilisateur le fasse explicitement. (Pourquoi?)

Page 8: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 8

Sélection

rating

S8 2( )

sid sname rating age28 yuppy 9 35.058 rusty 10 35.0

sname ratingyuppy 9rusty 10

sname rating rating

S,

( ( ))8 2

Sélectionne les lignes qui ne satisfont pas une condition de sélection.

Pas de duplicata dans le résultat.

Schéma du résultat identique au schéma de la seule relation d’entrée.

Le résultat peut être l’entrée d’une autre opération algébrique (Composition d’opérateurs).

Page 9: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 9

Union, Intersection, Différence Toutes ces opérations

prennent comme entrées deux relations qui doivent être compatible vis-à-vis de l’union: même nombre de

colonnes. colonnes correspondantes

ont le même type. Par convention, le

schéma du résultat sera le schéma de la 1ère relation.

sid sname rating age

22 dustin 7 45.031 lubber 8 55.558 rusty 10 35.044 guppy 5 35.028 yuppy 9 35.0

sid sname rating age31 lubber 8 55.558 rusty 10 35.0

S S1 2

S S1 2

sid sname rating age

22 dustin 7 45.0

S S1 2

Page 10: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 10

Produit Cartésien Chaque ligne de S1 est appariée avec chaque

ligne de R1. Le schéma du résultat contient les attributs de S1

et R1, avec les noms d’attributs hérités si possible. Conflit: S1 et R1 ont chacun un attribut portant le nom

sid. Solution: changer le nom des attributs (« renaming »).

( ( , ), )C sid sid S R1 1 5 2 1 1

(sid) sname rating age (sid) bid day

22 dustin 7 45.0 22 101 10/ 10/ 96

22 dustin 7 45.0 58 103 11/ 12/ 96

31 lubber 8 55.5 22 101 10/ 10/ 96

31 lubber 8 55.5 58 103 11/ 12/ 96

58 rusty 10 35.0 22 101 10/ 10/ 96

58 rusty 10 35.0 58 103 11/ 12/ 96

Opérateur de renaming:

Page 11: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 11

Joins Join conditionnel:

Le Schéma du résultat est le même que celui du produit Cartésien.

Moins de tuples que dans le produit Cartésien; pourrait être calculé de manière plus efficiente.

Parfois appelé theta-join.

R c S c R S ( )

(sid) sname rating age (sid) bid day

22 dustin 7 45.0 58 103 11/ 12/ 9631 lubber 8 55.5 58 103 11/ 12/ 96

S RS sid R sid

1 11 1

. .

Page 12: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 12

Joins (Suite) Equi-Join: Un cas spécial du join conditionnel où la

condition c contient seulement des égalités.

Schéma du résultat similaire au produit Cartésien, mais contient seulement une copie des attributs pour lesquels l’égalité est spécifiée.

Join naturel: Equi-join dans lequel il y a égalité entre tous les attributs ayant le même nom dans les deux relations.

sid sname rating age bid day

22 dustin 7 45.0 101 10/ 10/ 9658 rusty 10 35.0 103 11/ 12/ 96

S Rsid

1 1

Page 13: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 13

Division N’est pas supportée comme opérateur primitif, mais

est utile pour l’expression des requêtes telles que: Trouver tous les navigateurs qui ont réservé tous les bateaux.

Soit A une relation avec 2 attributs, x et y; B a seulement un attribut y: A/B = i.e., A/B contient tous les tuples x (navigateurs) tels que

pour chaque tuple y (bateau) de B, il y a un tuple xy dans A.

Ou: Si l’ensemble des valeurs de y (bateaux) associées avec une valeur x (navigateur) de A contient toutes les valeurs de y dans B, la valeur de x est dans A/B.

En général, x et y peuvent être n’importe quelles listes d’attributs; y est la liste des attributs de B, et x y est la liste des attributs dans A.

x x y A y B| ,

Page 14: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 14

Examples of Division A/B

sno pnos1 p1s1 p2s1 p3s1 p4s2 p1s2 p2s3 p2s4 p2s4 p4

pnop2

pnop2p4

pnop1p2p4

snos1s2s3s4

snos1s4

snos1

A

B1B2

B3

A/B1 A/B2 A/B3

Page 15: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 15

Définition de A/B La division n’est pas essentielle car elle peut

être définie à l’aide des opérateurs de base. (Cela est vrai aussi pour les joins –- on l’a vu ! --,

mais les joins sont si répandus que les SGBDs les implémentent directement.)

Idée: Pour A/B, calculer toutes les valeurs de x qui ne sont disqualifiées par une valeur de y dans B. Une valeur de x est disqualifiée si en attachant

une valeur de y venue de B, nous obtenons un tuple xy qui n’est pas dans A.Valeurs disqualifiées de x:

A/B:

x x A B A(( ( ) ) )

x A( ) tous les tuples disqualifiés

Page 16: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 16

Trouver les noms de tous les navigateurs qui ont réservé le bateau #103

Solution 1: sname bidserves Sailors(( Re ) )103

Solution 2: ( , Re )Temp servesbid

1103

( , )Temp Temp Sailors2 1

sname Temp( )2

Solution 3: sname bidserves Sailors( (Re ))

103

Page 17: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 17

Trouver les noms de tous les navigateurs qui ont réservé un bateau rouge

L’info au sujet de la couleur des bateaux ne peut être enregistrée que dans Boats; d’où le besoin d’un join supplémentaire: sname color red

Boats serves Sailors((' '

) Re )

Une solution plus efficiente:

sname sid bid color redBoats s Sailors( ((

' ') Re ) )

Un optimisateur des requêtes peut trouver cette dernière solution,Si on lui donne la première solution!

Page 18: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 18

Trouver les navigateurs qui ont réservé un bateau rouge ou vert

D’abord identifier tous les bateaux rouges ou verts, ensuite trouver les navigateurs qui ont réservé l’un de ces bateaux: ( , (

' ' ' '))Tempboats

color red color greenBoats

sname Tempboats serves Sailors( Re )

On peut aussi définir Tempboats en utilisant une union. Que se passe-t-il si l’on remplace la disjonction par une conjonction?

Page 19: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 19

Trouver les navigateurs qui ont réservé une bateau rouge et vert

On ne peut ici utiliser l’approche précédente! On doit d’abord identifier qui a réservé des bateaux rouges, ensuite qui a réservé des bateaux verts, et enfin calculer l’intersection. (Rappel: sid est la clé de Sailors):

( , ((' '

) Re ))Tempredsid color red

Boats serves

sname Tempred Tempgreen Sailors(( ) )

( , ((' '

) Re ))Tempgreensid color green

Boats serves

Page 20: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 20

Trouver les noms des navigateurs qui ont réservé tous les bateaux

Utiliser la division; les schémas des relations d’entrée à diviser doivent être choisis avec soins:

( , (,

Re ) / ( ))Tempsidssid bid

servesbidBoats

sname Tempsids Sailors( )

Trouver ceux qui réservé tous les bateaux ‘VIP’:

)''

(/ BoatsVIPbnamebid

.....

Page 21: Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.

Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 21

Résumé

Le modèle relationnel a des langages de requêtes rigoureusement définis et qui sont simples et puissants.

L’algèbre relationnelle est plus opérationnelle; elle est utile comme représentation interne des plans d’évaluation des requêtes.

Plusieurs voies d’expression d’une requête donnée existent; un optimisateur choisira la voie la plus efficiente.