Telechargé par boudia MALIKA

TP9-SQL3

publicité
Institut Galilée
Année 2018-2019
INFO2
TP BD Cinema en SQL3
Objectif : Utiliser l’objet-relationnel introduit dans SQL3
On désire implémenter la base de données Cinéma en SQL3.
1
Création de types et de tables
1. Créez un type adresse_type avec un numéro de rue, un nom de rue
et un nom de ville.
NB : Il faut terminer la définition du type par une ligne finale qui ne
contient qu’un ”/”. Ne terminez pas la définition par un ” ;”. Si vous
avez des erreurs de compilation d’un type, vous pouvez faire afficher
une description des erreurs en tapant ”show errors” dans sqlplus.
2. Créez un type person_type avec les informations associées (nom,
prénom, date de naissance, date de décès, pays)
3. Créez les types movie_type, review_type et review_aggregator_type.
4. Créez les tables person, movie, review_aggregator et review associées à ces 4 types (person_type, movie_type et review_type).
N’oubliez pas les contraintes d’intégrité (au moins les clés primaires).
5. Utilisez describe pour voir les descriptions des types et tables que
vous venez de créer.
2
Ajout et modification de données, requêtes
1. Ajoutez des données dans les quatre tables (person, movie, review_aggregator
et review) en utilisant les mêmes données que celles de la base en
SQL2.
2. Vérifiez qu’il s’agit bien de tables objets et non de tables relationnelles
en consultant les tables user_tables et user_object_tables.
3. Ecrire les requêtes suivantes :
(a) Listes des personnes avec toutes les informations associées
(b) Nombre de films par genre
(c) Liste des films dont le budget est supérieur à 20 millions
4. Mettez à jour le nombre de critique (113) du film Star wars pour
l’agrégateur Rotten Tomatoes.
1
3
Héritage et tables imbriquées
On désire définir les types acteur_type et realisateur_type. Ceux-ci
hériteront du type person_type. On utilise le principe d’une décomposition
par distinction.
1. Le type person_type doit être modifié (la clause NOT FINAL doit être
ajoutée pour permettre l’héritage - spécialisation du type). On désire
également pouvoir respecter la contrainte de totalité (une personne
peut être un acteur et un réalisateur).
Comme un type ne peut être modifié si des tables ou d’autres types
l’utilisent, vous devez donc supprimer la table person avant de modifier le type person_type.
Proposez une nouvelle définition du type person_type
2. Créez (i) un type movie_ref_type ayant comme attribut movie_id
(identifiant d’un film) et (ii) le type movies_type correspondant au
type d’une table imbriquée dont chaque enregistrement est du type
movie_ref_type, c’est-à-dire un identifiant de film.
3. Créez un type actor_type qui hérite de person_type et qui possède
l’attribut starring défini comme une table imbriquée d’identifiants
de film.
4. Créez un type director_type qui hérite de person_type et qui possède
l’attribut directs défini comme une table imbriquée (nested table)
d’identifiants de film.
5. Créez les tables actor et director.
6. Ecrivez les procédures permettant d’assurer la contrainte de totalité
sur les tables actor et director (un réalisateur peut jouer dans un
film et notamment son propre film). Testez les procédures avec des
insertions.
7. Insérez des données dans les tables actor et director.
8. Affichez la liste des acteurs avec toutes les informations associées (notamment les films dans lesquels ils jouent).
4
Collections
On désire définir une liste finie de revues (au plus 2).
1. Créer le type review_type composé d’un score, d’un nombre de critique et du nom de l’agrégateur de revues.
2
2. Créer le type reviews_type en utilisant des tableaux pré-dimensionnés
(VARRAY)
3. Insérez des données dans la nouvelle table cinema en utilisant les
données de la base en SQL2.
4. Modifiez le type movie_type et la table movie de manière à disposer
d’un attribut review. Cet attribut est une table imbriquée (nested
table) composée de trois attributs review_aggregator, score_pct
et critic_number.
5. Insérez des données dans la nouvelle table movies en utilisant les
données de la base en SQL2.
6. Affichez les films dont le scores de Rotten Tomatoes est supérieur ou
égale à 90.
3
Téléchargement