Université de Provence
Bases de données
Licence d’Informatique
TP No 2
Troisième année
SQL_PLUS d’Oracle
Page 1 sur 3
Il est conseillé, pour ce TP, de travailler le plus possible par l’intermédiaire de plusieurs fichiers contenant les
commandes SQL_PLUS. Il est conseillé de nommer ces fichiers de façon significative, avec une extension
.sql
.
Ces fichiers permettront de travailler selon vos besoins en dehors des séances de TP dans les salles en accès
libre. Attention : n’oubliez pas de vous connecter à capucine via la commande
ssh capucine
afin de pouvoir
utiliser SQL_PLUS.
1) Création de tables
Créer les tables correspondant aux relations données ci-dessous (la détermination des types de données adéquats
est à votre charge, mais, on considère que les heures de départ et d’arrivées sont sans les minutes). On n’oubliera
pas de créer les clés primaires et les clés étrangères (respectivement via les contraintes
PRIMARY KEY
(ci-
dessous en caractères soulignés) et
FOREIGN KEY … REFERENCES
(ci-dessous avec un caractère #).
Ville(numville,nomville,codepostal)
Train(numtrain,#villedepart,#villearrivee,heuredepart,heurearrivee,jour)
Passager(numpassager,nompass,age,#reftrain)
2) Création de données
Créer un ensemble de données correspondant au schéma précédent (une dizaine de villes, une quinzaine de
trains, et une trentaine de passagers). Pour créer les valeurs de la colonne jour, il faut utiliser la fonction
TO_DATE(’val’,’fmt’)
où
fmt
indique le format d’entrée de la date tel que considéré dans
val
.
3) Modification de tables et de données
On étend la relation Passager en lui rajoutant une colonne :
Passager(numpassager,nompass,age,#reftrain,categorie)
Répercuter cette modification sur la table Passager correspondante (commande
ALTER TABLE
).
Répercuter cette modification sur les données (commande
UPDATE … SET
) en considérant les étapes suivantes :
− Déterminer et exécuter une commande SQL_PLUS permettant de compléter automatiquement tous les
passagers de moins de 18 ans et ceux de plus de 60 ans en leur attribuant la catégorie 2.
− De même, déterminer et exécuter une commande SQL_PLUS permettant de compléter automatiquement
tous les passagers dont le nom commence par ‘R’ ou ‘C’ en leur attribuant la catégorie 1 (cf fonctions SQL
sur les chaînes).
− Pour tous les passagers restants (ie dont la valeur est
NULL
), déterminer et exécuter une commande
SQL_PLUS leur attribuant la catégorie 3.
4) Ajout de tables
− Ajouter les tables correspondantes aux relations ci-dessous dans la base de données : outre les contraintes de
clés, certaines contraintes dites d’intégrité peuvent être écrites via la clause
CONSTRAINT
(par exemple, la
distance entre deux villes ne peut pas être négative). Spécifier certaines contraintes sur ces tables ; modifier
les tables précédentes pour leur ajouter de telles contraintes d’intégrité.
Tarif(#train,categorie,prix)
Distance(#ville1,#ville2,nbkm)
− Insérer dans la base de données quelques nouveaux tuples pour instancier ces deux tables. Observer le
comportement de SQL_PLUS lorsque des tuples violant les contraintes d’intégrité sont définis.
− Ajouter la table correspondant à la relation
Categorie(numcat,intitule)
dans la base de données, et
enfin trois tuples de cette table pour les catégories 1, 2 et 3. Comment répercuter intelligemment cet ajout de
table sur les définitions des tables
Passager
et
Tarif
?