TP2 - Cinema AS - Clips-Imag

publicité
Année Spéciale
2008-2009
OMGL-10
Bases de données
TP n° 2 : SQL pour l’utilisation de bases de données – Cinéma
Le Syndicat d'Initiative de Grenoble a recruté un administrateur de bases de données dont le
premier travail a été de réaliser une base de données sous le système de gestion de bases de données
Postgres afin de renseigner les usagers sur les programmes de cinéma du jour. Le deuxième travail
de cet administrateur a été de saisir les données concernant les différents cinémas et leurs films. A
ce jour, la base de données cinema est donc opérationnelle.
Le schéma de la base de données cinema ainsi créée est le suivant (on rappelle aussi les clés
étrangères) :
cine
film
salle
(nomcine, adresse)
(titre, metteurscene)
(nomcine, numsalle, prix, #titre)
titre référence film(titre)
seance (#(nomcine, numsalle), heure)
(nomcine, numsalle) référence salle(nomcine, numsalle)
acteur (#titre, nomact)
titre référence film(titre)
Remarque : cette base cinema est unique et sera accédée simultanément par chacun d’entre vous.
C’est une des fonctionnalités offertes par les systèmes de gestion de bases de données…
Dans ce TP, vous jouez le rôle d’un simple utilisateur pouvant seulement consulter la base (vous
n’êtes donc pas l’administrateur) et vous devez écrire des requêtes SQL afin d’obtenir des
renseignements sur les programmes de cinéma du jour. Vous utiliserez pour cela le login postgres
invite, avec le mot de passe invite. Cet utilisateur peut uniquement consulter les données de la base
cinema.
Méthode de travail recommandée pour ce TP et les suivants :
- Créez un répertoire BD, puis un sous-répertoire TPCinema.
- Dans ce répertoire, éditez un nouveau fichier cine_req.sql dans lequel vous écrirez chacune des
requêtes permettant de répondre à une question.
- Veuillez noter que :
- Toutes les requêtes sont terminées par ; .
/* ceci est un commentaire */
-- ceci également
- Connectez-vous à PostgreSQL par la commande psql –h postgres-info –U invite cinema
- Recopier chaque requête par un Copier/Coller pour l’exécuter dans Postgres
OU
.Sous Postgres, exécuter la commande \i cine_req.sql pour exécuter l'intégralité du contenu du
fichier.
N.B. Vous pouvez aussi consulter le poly Postgres disponible sur l’intranet.
REQUETES
a) Visualisez les n-uplets des tables cine, salle, seance, film, acteur.
b) Donnez l'heure des séances au cinéma La Nef.
c) Donnez le prix des places et le titre du film qui passe dans chaque salle du cinéma Pathé.
d) Donnez l'adresse des cinémas où passe un film mis en scène par George Lucas.
e) Donnez le nom des cinémas où passe un film mis en scène par un réalisateur dont le nom contient
Porum
f) Donnez le nom des cinémas (et le titre du film) où passe un film interprété par Romain Duris ou
Fabrice Luchini.
g) Donnez le nom des cinémas (et le titre du film) où passe un film interprété par Daniel Auteuil et
Gérard Depardieu.
h) Donnez le nom des cinémas (le titre du film et le nom de son réalisateur) où passe un film
interprété par son réalisateur.
i) Donnez les heures des séances de la salle du cinéma La Nef qui passe le film Molière.
j) Donnez le nom des cinémas ayant plus d'une salle.
k) La commande suivante permet d’augmenter d’un euro le prix de la salle 2 du cinéma La Nef.
Exécutez-la afin de constater que vous n’en avez pas le droit car l’administrateur ne vous a donné
que les droits de consulter les données de cette base.
update salle
set prix = prix + 1
where nomcine= ‘La Nef’ and numsalle=2 ;
l) Un utilisateur dieu a été créé par l’administrateur avec le mot de passe paradis. Cet utilisateur a
été autorisé par l’administrateur à modifier les tables cine et salle de la base cinema. C’est donc un
utilisateur averti possédant des droits supplémentaires par rapport à l’utilisateur de login invite.
Connectez-vous (dans une deuxième fenêtre) chez l’utilisateur dieu de mot de passe paradis :
psql –h postgres-info –U dieu cinema
Ré-exécuter la commande précédente afin de vérifier que l’utilisateur dieu peut effectivement
augmenter d’un euro le prix de la salle 2 du cinéma La Nef.
m) Exécuter la commande suivante afin de vérifier si l’utilisateur dieu a le droit de modifier la table
seance.
update seance
set heure = heure + 1
where nomcine= ‘Pathé’ ;
Quel aurait été le résultat de cette commande si elle avait pu être exécutée par dieu ?
n) Exécuter la commande suivante afin de vérifier si vous-même ou l’utilisateur dieu avez le droit
d’insérer un nouveau n-uplet dans la table cine.
insert into cine (nomcine, adresse)
values (‘Nef Chavant’,’21 bd Maréchal Lyautey, Grenoble’);
En résumé : Quels sont les droits de l’utilisateur invite sur la base? de l’utilisateur dieu ? de
l’administrateur?
Pour finir : redirigez le résultat de vos requêtes dans un fichier (cf. poly Postgres), vérifiez le
contenu puis imprimez-le. Quitter Postgres en tapant la commande \q .
Téléchargement