Informations

Auteur(s) Quentin Cappart
Date limite Pas de date limite
Limite de soumission Pas de limite

Se connecter

Opérations de renommage et d'assignation

L'algrèbre relationnelle a également été étendue avec d'autres opérateurs. Cette question va vous permettre de découvrir celui de renommage (\(\rho\)) et celui d'assignation (\(\rightarrow\)). Une description détaillée est disponible dans l'ouvrage de référence (chapitre 2).

Renommage (\(\rho\))

Cet opérateur permet de changer le nom d’une relation et/ou de ses attributs sans modifier son contenu (extension). On a deux situations qui peuvent se produirent sur une relation \(R(A_1,\dots,A_n)\):

  1. Renommage de toute la relation: \(\rho_{S}(R)\) produit une relation ayant le même schéma et les mêmes tuples que \(R\), mais portant le nom \(S\).
  2. Renommage pour les attributs: \(\rho_{S(B_1,\dots,B_n)}(R)\) produit une relation au nom \(S\) où chaque \(B_i\) remplace \(A_i\). Le nombre d’attributs doit être identique.

Cette opération a plusieurs propriétés:

  • Le renommage ne modifie pas les tuples.
  • Il est sémantiquement neutre (opérateur purement syntaxique).
  • Il est indispensable pour les auto-jointures afin d'éviter les ambiguités de nom (jointure avec la relation elle-même). Comme par exemple:
    • \(\rho_{s_1}(student) \bowtie_{s_1.dept\_name = s_2.dept\_name} \rho_{s_2}(student)\).
Assignation (\(\rightarrow\))

L’assignation permet d’associer le résultat d’une expression d’algèbre relationnelle à un identificateur. Formellement, \(T \leftarrow E\) indique que \(T\) est une relation temporaire correspondant à l'expression relationnelle \(E\). L'assignation de modifie pas la base de données et sert principalement à structurer les requêtes complexes. En voici un exemple:

  1. \(S \leftarrow \pi_{dept\_name}(student)\)
  2. \(R \leftarrow \pi_{dept\_name}(instructor)\)
  3. \(S - R\)

Question

On va considérer ces relations de la base de données university :

  • \(\mathsf{course}(\underline{course\_id}, title, dept\_name, credits)\)
  • \(\mathsf{prereq}(\underline{course\_id},\underline{prereq\_id})\)
  • \(\mathsf{department}(\underline{dept\_name}, building, budget)\)
  • \(\mathsf{student}(\underline{ID}, name, dept\_name, tot\_credit)\)
  • \(\mathsf{instructor}(\underline{ID}, name, dept\_name, salary)\)
  • \(\mathsf{advisor}(\underline{s\_ID}, i\_ID)\)

Question 1:

\(\rho_{etudiant}(student)\)

Question 2:

\(\rho_{S(ID,nom,dept,cred)}(student)\)

Question 3:

\(\rho_{s1}(student) \times \rho_{s2}(student)\)

Question 4:

\(T \leftarrow \pi_{dept\_name}(student)\)

Question 5:
  1. \(S \leftarrow \pi_{dept\_name}(student)\)
  2. \(R \leftarrow \pi_{dept\_name}(instructor)\)
  3. \(S - R\)
Question 6:

\(\rho_{A}(advisor) \bowtie_{A.s\_ID=student.ID} student\)

Question 7:

\(\rho_{c1}(course) \bowtie_{c1.course\_id=prereq.course\_id} prereq\)

Question 8:

\(X \leftarrow \rho_{s1}(student) \times \rho_{s2}(student)\)

Question 9:
  1. \(T \leftarrow \pi_{course\_id}(course)\)
  2. \(T - \pi_{course\_id}(prereq)\)
Question 10:

\(\rho_{I}(instructor) \bowtie_{I.dept\_name=department.dept\_name} department\)