Aller au contenu principal

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 ?
Laquelle correspond à une jointure naturelle de R et S sur la clé k ?