Cette question va vous introduire à l'opérateur relationnel de division. Une description de cet opérateur est disponible dans l'ouvrage de référence (exercices pratiques du chapitre 2).
Division (\(\div\))
L’opérateur de division, permet d’exprimer des requêtes de type "pour tout". Considérons deux relations \(R(X, Y)\) et \(S(Y)\), où les attributs de \(S\) sont inclus dans ceux de \(R\) (indiqué par \(S \subseteq R\)).
La division : \(R \div S\) produit une relation sur les attributs \(X\) tels que :
- \(x \in R \div S \iff \forall y \in S,\ (x,y) \in R\)
Intuitivement, on ne retourne les valeurs de \(X\) qui sont seulement associées à toutes les valeurs de \(S\). Cet opérateur est très utile pour exprimer des requêtes du style:
- Les étudiants ayant suivi tous les cours obligatoires.
- Les instructeurs enseignant tous les cours d’un département.
Exemple
Considérons les relations :
- \(\mathsf{prereq}(\underline{course\_id},\underline{prereq\_id})\)
- \(\mathsf{course}(\underline{course\_id}, title, dept\_name, credits)\)
On souhaite trouver les cours qui ont tous les cours du département ``Physics`` comme prérequis.
- Etape 1: ensemble des cours du département
Physics. - \(S \leftarrow \pi_{course\_id}(\sigma_{dept\_name='Physics'}(course))\)
- Cela correspond à \(S(course\_id)\).
- Etape 1: ensemble des cours du département
- Étape 2: relation des prérequis.
- \(R \leftarrow \pi_{course\_id, prereq\_id}(prereq)\)
- Cela correspond à \(R(course\_id, prereq\_id)\).
- Étape 3: Division.
- \(R \div S\)
- On obtient ainsi les \(course\_id\) tels que pour chaque cours de
Physics, ce cours apparaît comme prérequis.
Question
Considérez les 3 relations suivantes venant de la base de données university et répondez aux questions suivantes.
Table: instructor ID name dept_name salary 10101 Srinivasan Comp. Sci. 65000 12121 Wu Finance 90000 15151 Mozart Music 40000 22222 Einstein Physics 95000 32343 El Said History 60000 33456 Gold Physics 87000 45565 Katz Comp. Sci. 75000 58583 Califieri History 62000 76543 Singh Finance 80000 76766 Crick Biology 72000 83821 Brandt Comp. Sci. 92000 98345 Kim Elec. Eng. 80000
Table: department dept_name building budget Biology Watson 90000 Comp. Sci. Taylor 100000 Elec. Eng. Taylor 85000 Finance Painter 120000 History Painter 50000 Music Packard 80000 Physics Watson 70000
Table: student ID name dept_name tot_cred 00128 Zhang Comp. Sci. 102 12345 Shankar Comp. Sci. 32 19991 Brandt History 80 23121 Chavez Finance 110 44553 Peltier Physics 56 45678 Levy Physics 46 54321 Williams Comp. Sci. 54 55739 Sanchez Music 38 70557 Snow Physics 0 76543 Brown Comp. Sci. 58 76653 Aoi Elec. Eng. 60 98765 Bourikas Elec. Eng. 98 98988 Tanaka Biology 120
INGInious