Vous êtes sur la page 1sur 4

USTHB – Faculté d’Informatique Module : Bases de données

L3 GTR – Mars 2023

Corrigé TD Langage Algébrique

Exercice :
Soit le schéma relationnel suivant :

Film (Titre, NomRéalisateur, durée, Nationalité)


Séance (NomSalle, Titre, HeureDeb, Version)
Joue (NomActeur, Titre)
Produit (NomProducteur, Titre)
Vu (NomSpectateur, Titre)

NomRéalisateur, NomActeur, NomProducteur, NomSpectateur, sont du même domaine.

Exprimer les requêtes suivantes dans le langage algébrique :

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.

πTitre (Film ∞ πNomReal (σTitre = ‘HP’ (Film))


NomRealisateur

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

3- Les films dont lesquels joue ‘MS’ et ne joue pas ‘TC’ :


Il suffit de retrouver les titres des films dans lesquels joue l’acteur « MS » et d’enlever les
films dans lesquels joue l’acteur « TC » grâce à l’opération de soustraction.

πTitre (σNomActeur = ‘MS’ Joue) - πTitre (σNomActeur = ‘TC’ Joue)

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).

Joue ÷ πTitre (σNomReal = ‘SS’ Film)

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 :

πNomActeur(Joue ∞ πTitre (σNomReal = ‘SS’ Film))


Titre

5- Acteurs qui ont joué dans un film, qu’ils ont réalisé et produit :

πNomActeur (Joue ∩ (πNomReal, Titre Film) ∩ 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).

πNomActeur (Joue) - πNomActeur (σNomReal <> ‘SS’ Film ∞ Joue)


Titre

Requête supplémentaire à faire :

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é :

πNomActeur Joue - πNomActeur (Joue - Vu)

8- Acteurs qui n’ont vu que tous les films dans lesquels ils ont joué :

(πNomActeur Joue - πNomActeur (Joue - Vu)) - πNomActeur (Vu - Joue)

4
Corrigé par L. BERKANI

Vous aimerez peut-être aussi