Algèbre relationnelle Algèbre relationnelle Opérations de l

publicité
Algèbre relationnelle
!
!
!
!
!
Algèbre relationnelle
Une autre vision de l'interrogation des bases de
données
!
Plus théorique (aide à comprendre)
!
Pas seulement théorique : utilisable directement
en SQL
Support de l'algèbre : tables comme ensemble de
n-uplets.
Opération : table1, table2, ... -> table-résultat
une opération combine des tables pour en
produire une nouvelle
(Mais peu utilisée)
SQL est une implémentation de l' « algèbre
relationnelle »
1
2
Opérations de l'algèbre relationnelle
!
union,
!
intersection,
!
différence,
!
projections,
!
restriction,
!
produits,
!
jointures,
!
...
union, intersection, différence
!
!
!
S'appliquent à des tables qui ont des
schémas identiques
union, intersection et différence d'ensembles de
n-uplets.
a | b
a | b
a | b
--+-- ! --+-- = --+-1 | 2
3 | 4
1 | 2
3 | 4
5 | 6
3 | 4
5 | 6
3
4
Sélection
Projection
!
Choix des n-uplets qui satisfont une condition.
!
Choix de certaines colonnes
!
R1 = !C(R2) où C est une condition booléenne
!
R1 = "L(R2) où L est une liste d'attributs
!
VenteAPerte = !prix < coût(Vente)
!
NomDesBars = "nom(bar)
–
5
(une « table » à une seule colonne)
6
Produits et jointures
!
!
jointure naturelle
On a d'abord le produit Cartésien
–
R = R1 x R2
–
Toutes les combinaisons de nuplets de R1 et R2
!
!
Puis la jointure theta, qui combine un produit et
une sélection : R = R1 !c R2
–
R = !C(R1 x R2)
–
(C'est le sens général des requêtes SELECT)
!
R = R1
R2
Les n-uplets ne sont retenus que si les attributs de
même nom ont les mêmes valeurs
(C'est un cas particulier de jointure thèta)
7
8
Exemple
!
!
R1
a | b
---+--1 | 2
2 | 3
R = R1
equi-jointures
R2 b | c
---+-3 | 7
2 | 9
!
!
formellement, une jointure theta où les conditions
sont des égalités.
Très semblables à des jointures naturelles
R2 = a | b | c
--+---+--1 | 2 | 9
2 | 3 | 7
9
10
Jointures naturelles et équi-jointures
!
Exemple
Implémentation très efficace si il y a des
« index » sur les colonnes de la jointure
–
Les index sont des structures de données auxiliaires
qui facilitent l'accès au n-uplets en fonction de la
valeur de l'attribut pour lequel on a un index
–
postgreSQL construit automatiquement un index sur
les clés primaires.
!
Equi-jointure exprimée comme jointure theta :
SELECT r1.a, r2.b FROM r1, r2
WHERE r1.c = r2.d
!
Introduction de l'équi-jointure explicite :
SELECT r1.a, r2.b
FROM r1 JOIN r2 ON r1.c = r2.d
11
12
Téléchargement