Créez les vues suivantes sur le schéma précédent.
- (a)
- Une vue ActivitesModiques (Station, Activite) donnant
le nom des stations et des activités dont le prix
est inférieur à 140 FF. Toute ligne
insérée dans cette vue doit apparaître
dans la vue ensuite.
- (b)
- Une vue ActivitesCheres, de même schéma,
avec prix supérieur à 140 FF, et la même
contrainte d'insertion.
- (c)
- Une vue StationEuro (Nom, Capacite, Lieu, TarifEuro)
donnant le nom
d'une station, sa capacité, le lieu
et le tarif en euro (un euro=6,58 FF).
- (d)
- Une vue Tarifs (Station, Tarif, OptionMin, OptionMax)
donnant, pour chaque station, le tarif et les prix min
et max des activités.
Solution ::
CREATE VIEW ActivitesCheres AS select nomstation, libelle
FROM activite
WHERE prix > 140
WITH CHECK OPTION;
CREATE VIEW StationEuro (Nom, Capacite, Lieu, TarifEuro) AS
SELECT NomStation, capacite, lieu, tarif / 6.58
FROM Station;
2.
Consultez ensuite le contenu de ces vues. Vous pouvez insérez
quelques lignes supplémentaires dans les tables
et constater qu'elles sont prises en compte dans les vues.
3.
Dans quelles vues peut-on insérer, détruire et
mettre-à-jour? Essayez les opérations suivantes:
- (a)
- Insérez une activité 'Kayac' pour la
station 'Venusa' dans ActivitesCheres
et ActivitesModiques. Le contrôle
sur l'insertion est-il utile dans ce cas?
- (b)
- Peut-on insérer dans StationEuro? Sous quelle
condition? Faites l'essai.
- (c)
- Détruisez une ligne de StationEuro.
Solution :
- (a)
- Le contrôle est inutile puisqu'on ne peut pas
spécifier le prix au travers de la vue.
- (b)
- On ne peut insérer dans StationEuro que
les attributs (nom, capacite, lieu) a cause des règles
sur les NOT NULL. tarifEuro n'est pas
modifiable car il résulte d'un calcul.