TD9 : Algèbre relationnelle

L'algèbre relationnelle est une formulation mathématiques des base de données relationnelles que nous avons vu en SQL. Toutes les opérations que l'on a vu en SQL peuvent être écrites en algèbre relationnelle et réciproquement. Certaines fois la traduction sera évidente mais ce n'est pas toujours le cas.

Schémas, extensions et relations

Un "schéma" est un ensemble de noms d'"attributs" (ou de "champs"). On mentionne qu'un attribut est une clef primaire s'il est souligné. Les "domaines" des attributs sont les valeurs possibles que peuvent prendre cet attribut. En général on ne précise pas les domaines car on s'intéresse plus aux liens entre les relations.

Par exemple pour la table Clients SQL suivante :

ID Nom Age
1 Alice 20
2 Bob 19
3 Camille 19

où ID est la clef primaire de type INT, Nom est de type TEXT et Age de type INT. Le schéma est "Clients(ID,Nom,Age)".

Une "relation" est décrite par un schéma et par son contenu (ensemble des "lignes" ou "enregistrements" ou "n-uplets") qu'on appelle "extension".

La "taille" d'une relation est le nombre de lignes dans son extension.

Opérateur relationnel : la sélection

Etant donné une relation R et une formule F (formée de combinaisons de comparaisons et de connecteurs logiques) on définit :

σF(R)={rR ⁣:r  satisfait F} \sigma_F(R) = \{ r \in R \colon r \; \text{satisfait } F \}

qui forme une nouvelle relation qui est l'ensemble des lignes de la relation RR qui satisfont la formule FF.

Remarque mnémotechnique : σ\sigma se lit "sigma" et correspond au "s" grec pour "sélection".

Son équivalent en langage SQL est WHERE.

Questions

RR désigne la relation "Clients" du paragraphe précédent.

  1. Calculer la relation σAge=19(R)\sigma_{ Age = 19}(R).

  2. Calculer la relation σAge19(R)\sigma_{ Age \geq 19}(R).

  3. Calculer la relation σAge<19(R)\sigma_{ Age < 19}(R).

Opérateur relationnel : la projection

Etant donné une relation RR et AA un ensemble de champs on définit πA(R)\pi_A(R) commen étant la restriction de la relation RR (et de ses données) aux champs de AA.

Remarque mnémotechnique : π\pi correspond au "p" grec pour "projection".

Son équivalent en langage SQL est SELECT.

Questions

RR désigne la relation "Clients" du paragraphe précédent.

  1. Calculer la relation πID,Nom(R)\pi_{ ID, Nom}(R).

  2. Calculer la relation πAge(R)\pi_{ Age }(R).

  3. Calculer la relation πID,Nom,Age(R)\pi_{ ID,Nom, Age}(R).

Opérateurs ensemblistes : union, intersection et différence

Etant donné deux relations RR et SS ayant le même schéma, on définit les trois opérations suivantes :

RS={t ⁣:tR ou tS} R \cup S = \{ t \colon t \in R \text{ ou } t \in S\}

RS={t ⁣:tR et tS} R \cap S = \{ t \colon t \in R \text{ et } t \in S\}

RS={t ⁣:tR et t∉S} R - S = \{ t \colon t \in R \text{ et } t \not\in S\}

Les trois opérations précédentes crée chacune une relation ayant le même schéma que RR et SS.

Exercices

On considère les relations suivantes : RR les clients ayant acheté un vélo

ID Nom Age
1 Alice 20
2 Bob 19
3 Camille 19

et SS les clients ayant acheté un trombone

ID Nom Age
3 Camille 19
4 Jo 20
5 Cassiopée 20
  1. Calculer la relation RSR \cup S. À quoi cela correspond t-il en langage courant ?

  2. Calculer la relation RSR \cap S. À quoi cela correspond t-il en langage courant ?

  3. Calculer la relation RSR - S. À quoi cela correspond t-il en langage courant ?

  4. Pour RR et SS deux relations ayant même schéma, quel est la taille de RSR \cup S en fonction de RR et SS ? Et pour RSR \cap S et RSR - S ?

Produit cartésien

Etant donné deux relations RR et SS (n'ayant pas forcément le même schéma) on définit la relation

R×S={(r,s) ⁣:rR et sS} R \times S = \{ (r,s) \colon r \in R \text{ et } s \in S\}

Exercices

  1. Calculer le produit cartésien des deux relations suivantes :

Relation "Sandwichs" :

ID Sandwich Prix
1 Végé 3,5
2 Panini 4
3 Muffuletta 6,7

Relation "Sauces" :

Sauce Prix
Ketchup 1,3
Mystère 1,6
  1. Calculer le produit cartésien entre les relations RR et SS du paragraphe précédent.

  2. De manière générale, pour deux relations RR et SS, quelle est la taille de R×SR \times S en fonction de RR et de SS ?