next up previous
Next: Triggers Up: Création d'un schéma relationnel Previous: Insertion de données

Vues

Objectif: créer des vues et tester l'interrogation et la mise-à-jour à travers ces vues.

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



next up previous
Next: Triggers Up: Création d'un schéma relationnel Previous: Insertion de données
Philippe Rigaux
2000-02-03