Algèbre relationnelle
Progression
#Algèbre relationnelle
À quoi ça sert ?
À quoi ça sert: raisonner formellement sur les requêtes et transformations de données. Comment: composer σ (sélection), π (projection), ρ (renommage), × (produit), ∪/− (union/différence), ⋈ (jointure), ÷ (division) pour exprimer des requêtes et optimiser.
#Opérations de base
- Sélection σ_condition(R) filtre des lignes.
- Projection π_attributs(R) garde des colonnes.
- Renommage ρ_nouveauNom/alias(R) renomme relation/attributs.
#Combinaisons utiles
- Jointure naturelle: R ⋈ S ≡
σ_{R.k = S.k}(R × S)
- Semi‑jointure: R ⋉ S conserve R ayant un match dans S.
- Anti‑jointure: R ▷ S conserve R sans match dans S.
#Animation: de l’algèbre à SQL
Projection
π_name,amount(R⋈S) ↔ SELECT name, amount
Sélection
σ_amount>100(...) ↔ WHERE amount > 100
Renommage
ρ(o=orders,u=users) ↔ aliases SQL
Jointure
⋈ sur clé ↔ JOIN ON o.user_id=u.id
#Règles d’optimisation (intuitions)
- Pousser les sélections le plus bas possible (réduire la taille intermédiaire).
- Combiner projections pour réduire les colonnes tôt.
- Utiliser des index sur les attributs des sélections/jointures.
Équivalences fréquentes
σ_c1(σ_c2(R))
≡ σ_{c1∧c2}(R)
, π_A(π_B(R))
≡ π_A(R)
si A ⊆ B.
#Cas pratique
Exprimer en algèbre: “clients ayant commandé tous les produits d’une catégorie X” → division: Clients ÷ (π_clientId(Commandes ⋈ σ_cat= X (Produits)))
. En SQL, se traduit souvent par NOT EXISTS
doublement imbriqué.
#Quiz
Laquelle correspond à une jointure naturelle de R et S sur la clé k ?