Algèbre relationnelle
Dans le second chapitre du cours, nous avons abordé les concepts suivants :
L’algèbre relationnelle est un langage formel permettant de manipuler des relations dans une base de données relationnelle.
Elle est basée sur des opérations mathématiques et permet de réaliser des opérations telles que la sélection, la projection, la jointure, l’union, la différence, etc.
Il existe 2 notations principales pour l’algèbre relationnelle : la notation mathématique et la notation textuelle.
Opérateurs
de l’algèbre relationnelle
Les opérations de base de l’algèbre relationnelle sont les suivantes :
- Projection (
π
ouR[*]
ouR[A]
) : sélectionne les colonnes spécifiées - Sélection (
σ
ouR:C
) : sélectionne les lignes qui satisfont une condition - Produit cartésien (
×
ouR1 × R2
) : combine toutes les lignes de deux relations - Jointure (
⋈
ouR1 ⋈ R2
ouR1 : (R1.A = R2.A) x R2
) : combine les lignes de deux relations en fonction d’une condition de jointure - Union (
∪
ouR1 ∪ R2
) : retourne toutes les lignes de deux relations - Intersection (
∩
ouR1 ∩ R2
) : retourne les lignes communes à deux relations - Différence (
-
ouR1 - R2
) : retourne les lignes qui sont dans une relation mais pas dans l’autre - Division (
÷
ouR1 ÷ R2
ouR1 / R2
) : retourne les valeurs de l’attribut de R1 qui sont associées à toutes les valeurs de l’attribut de R2 - Renommage (
ρ
ouR[A1|A2]
) : renomme les attributs d’une relation
Opérateurs
algébriques
- Comparaison (
≠, <, >, ≤, ≥, =
) : compare les valeurs de deux relations dans une condition - Négation (
¬
) : retourne les lignes qui ne satisfont pas une condition - Conjonction (
∧
ouAND
) : retourne les lignes qui satisfont deux conditions - Disjonction (
∨
ouOR
) : retourne les lignes qui satisfont au moins une des conditions
supplémentaires
Ces opérateurs ne font pas réellement partie de l’algèbre relationnelle, mais peuvent être utilisés dans les requêtes SQL :
- Agrégation (
Γ
ouCOUNT
) : regroupe les lignes d’une relation et applique des fonctions d’agrégation - Existence (
EXISTS
) : vérifie si une relation contient des lignes - Quantification (
FORALL
) : vérifie si toutes les lignes d’une relation satisfont une condition - Sous-requête (
IN
) : utilise le résultat d’une requête comme condition
Exemple
Soit les relations suivantes :
1Employes (idEmploye, nom, prenom, dateEmbauche, salaire)2Departements (idDepartement, nomDepartement)3Affectations (idEmploye, idDepartement, dateDebut, dateFin)
Requêtes
1. Sélectionner les employés qui gagnent plus de 3000€
1σ salaire > 3000 (Employes)2
3ou4
5R = Employes : (salaire > 3000)
Requêtes
2. Sélectionner les employés du département ‘Informatique’
1σ nomDepartement = 'Informatique' (Employes ⋈ Affectations ⋈ Departements)2
3ou4
5R1 = Departements : (Departements.idDepartement = Affectations.idDepartement) x Affectations6R2 = Employes : (Employes.idEmploye = Affectations.idEmploye) x R17R3 = R2 : (nomDepartement = 'Informatique')
Requêtes
3. Sélectionner les employés qui ne sont pas affectés à un département
1π idEmploye (Employes) - π idEmploye (Affectations)2
3ou4
5R = Employes[idEmploye] - Affectations[idEmploye]
Requêtes
4. Sélectionner les employés qui sont affectés à tous les départements
1π idEmploye (Employes) ÷ π idEmploye (Affectations)2
3ou4
5R = Employes[idEmploye] ÷ Affectations[idEmploye]
Equivalences AR / SQL
Algèbre Relationnelle | SQL | Description | Remarque |
---|---|---|---|
|
| Projection | |
|
| Projection sur toutes les colonnes | |
|
| Sélection | |
|
| Produit cartésien | |
|
| Jointure | |
|
| Jointure naturelle | |
|
| Union | |
|
| Intersection | |
|
| Différence | Avec SQLite, MINUS est remplacé par le terme EXCEPT |
|
| Division | Avec SQLite, MINUS est remplacé par le terme EXCEPT |
|
| Division | Une version alternative de la division : On compte le nombre de valeurs distinctes de B dans R et on vérifie qu'il est égal au nombre de valeurs distinctes de B dans S. |