Académique Documents
Professionnel Documents
Culture Documents
Exercice :
Soit le schéma relationnel suivant :
1- Quels sont les titres des films réalisés par le réalisateur du film de titre ‘Les hommes du
Président’.
2- Dans quelle salle peut-on voir un film dans lequel jouent ‘MS’ et ‘TC’.
3- Dans quels films joue ‘MS’ et ne joue pas ‘TC’.
4- Quels sont les acteurs qui ont joué dans tous les films réalisés par ‘SS’.
5- Quels sont les acteurs qui ont joué dans un film, qu’ils ont réalisé et produit.
6- Quels sont les acteurs qui n’ont joué que dans des films réalisés par ‘SS’.
7- Quels sont les acteurs qui ont vu tous les films dans lesquels ils ont joué.
8- Quels sont les acteurs qui n’ont vu que tous les films dans lesquels ils ont joué.
Corrections :
1- Les titres des films réalisés par le réalisateur du film de titre ‘Les hommes du Président’ :
Dans cette requête on recherche d’abord le nom du réalisateur du film « HP », puis on refait
le parcours de la table Film pour retrouver tous les films ayant le même nom réalisateur
grâce à la requête de jointure en considérant l’attribut en commun Nom réalisateur.
1
Corrigé par L. BERKANI
2- Salle où on peut voir un film dans lequel jouent ‘MS’ et ‘TC’ :
Dans cette requête on recherche d’abord les titres de films dans lesquels a joué l’acteur
« MS », puis de la même manière on recherche les titres de films dans lesquels a joué
l’acteur « TC ». Pour retrouver les films en commun il suffit de faire l’intersection entre les 2
ensembles. Finalement, on faut une jointure avec la ta séance par rapport à l’attribut en
commun titre pour retrouver les noms de salles, et bien sûr on fait une projection sur
l’attribut titre pour n’afficher que les titres des films (vu que la jointure permet d’avoir pour
un tuple donné tous les attributs des deux ensembles de données).
πNomSalle (Seance ∞ (πTitre (σNomActeur = ‘MS’ Joue) ∩ πTitre (σNomActeur = ‘TC’ Joue)))
Titre
4- Acteurs qui ont joué dans tous les films réalisés par ‘SS’ :
Nous commençons par retrouver les titres des films qui sont réalisés par « SS », puis il
faudrait diviser l’ensemble de données de la table joue par cet ensemble afin de déterminer
les acteurs ayant joué dans tous les films réalisés par « SS ».
Nb. La division va donner les acteurs ayant joué dans tous les films réalisés par SS, mais bien
sûr on pourra retrouver des acteurs ayant joué dans tous ces films et aussi dans d’autres
films qui ne sont pas réalisés par SS (mais bien sûr on ne va pas retrouver dans cet ensemble
des acteurs qui ont joué dans une partie seulement des films réalisés par SS).
2
Corrigé par L. BERKANI
Attention : pour la requête 4, c’est faux d’utiliser une jointure car la jointure sera utilisée
plutôt pour exprimer la requête suivante :
Acteurs qui ont joué au moins dans l’un des films réalisés par ‘SS’ : la requête
correspondante sera écrite comme suit :
5- Acteurs qui ont joué dans un film, qu’ils ont réalisé et produit :
6- Acteurs qui n’ont joué que dans des films réalisés par ‘SS’ :
On sélectionne les acteurs qui ont joué dans des films réalisés par SS et on enlève les
acteurs qui ont joué avec autres que SS.
πNomActeur (σNomReal = ‘SS’ Film ∞ Joue) - πNomActeur (σNomReal <> ‘SS’ Film ∞ Joue)
Titre Titre
On peut prendre directement acteurs de la table joue car si un acteur existe dans la table
Joue alors il a joué dans un film (voir le schéma de la table joue).
Acteurs qui n’ont joué que dans tous les films réalisés par ‘SS’ :
Joue ÷ πTitre (σNomReal = ‘SS’ Film) - πNomActeur (σNomReal <> ‘SS’ Film ∞ Joue)
Titre
3
Corrigé par L. BERKANI
7- Acteurs qui ont vu tous les films dans lesquels ils ont joué :
8- Acteurs qui n’ont vu que tous les films dans lesquels ils ont joué :
4
Corrigé par L. BERKANI