Sie sind auf Seite 1von 4

Les vues

Introduction :
Pourquoi des vues ? Elles permettent de réaliser, dans le monde des SGBD
relationnels, le niveau externe des SGBD selon l’architecture ANSI/SPARC.
Rappelons que le niveau externe propose à l’utilisateur une perception de la base
plus proche de ses besoins, en termes de structures et de formats de données. De
manière générale, les vues garantissent une meilleure indépendance logique des
programmes par rapport aux données. En effet, le programme restera invariant aux
modifications de schéma s’il accède à la base via une vue qui l’isole de celle-ci.
Lors des modifications du schéma de la base, l’administrateur modifiera seulement
la définition des vues, et les programmes d’application pourront continuer à
travailler sans modification. Les vues ont aussi un rôle de sécurité : l’utilisateur ne
peut accéder qu’aux données des vues auxquelles il a droit d’accès ; ainsi, les
données en dehors de la vue sont protégées. De manière détournée, les vues
permettent aussi certains contrôles d’intégrité lorsqu’elles sont utilisées pour les
mises à jour : on dit alors qu’on effectue une mise à jour au travers d’une vue. De
telles mises à jour sont très contrôlées.

Définition : Vue.

Def 1 : Une vue est tout simplement une sorte de table virtuelle (c'est-à-dire dont
les données ne sont pas stockées dans à la base. Une vue est une table virtuelle, , et
dans laquelle il est possible de rassembler des informations provenant de plusieurs
tables. On parle de "vue" car il s'agit simplement d'une représentation une table de
la base de données) calculable par une question qui ne contient en réalité que le
résultat d'une requête SQL que vous avez défini lors de la Une création de la vue.
Une vue n’a pas d’existence physique : c’est une fenêtre dynamique (et
déformante), non matérialisée sur les disques, par laquelle un utilisateur accède des
données dans le but d'une exploitation visuelle.

1
Def 2 : Une vue est une définition logique d'une relation, sans stockage de
données, obtenue par interrogation d'une ou plusieurs tables de la BD . Une vue
peut donc être perçue comme une fenêtre dynamique sur les données, ou encore
une requête stockée (mais dont seule la définition est stockée, pas le résultat, qui
reste calculé dynamiquement).

Une vue permet d'implémenter le concept de schéma externe d'un modèle


conceptuel.

Synonymes : Relation dérivée, Table virtuelle calculée.

Création de vues en SQL (CREATE VIEW) :

La syntaxe générale de la commande SQL1 de création de vue est :

CREATE VIEW < Nom_de_vue > [ (LISTE D’ATTRIBUT)]

AS < Requete >

[WITH CHECK OPTION]

Le nom de vue est le nom de la table virtuelle correspondant à la vue, la liste des
attributs définit les colonnes de la table virtuelle, la question permet mis à jour via
la vue doivent satisfaire aux conditions de la question définissant la vue. Ces
conditions seront vérifiées après la de calculer les tuples peuplant la table virtuelle.
Les colonnes du SELECT sont appliquées sur celles de la vue. Si les colonnes de
la vue ne sont pas spécifiées, celle-ci hérite directement des colonnes du SELECT
constituant la question. La clause WITH CHECK OPTION permet de spécifier
que les tuples insérés ou mise à jour via la vue doivent satisfaire aux conditions de
la requête définissant la vue. Ces conditions seront vérifiées après la mise à jour :
le SGBD testera que les tuples insérés ou modifiés figurent bien parmi la réponse à
la question, donc dans la vue. Ceci garantie que les tuples insérés ou modifiés via
la vue lui appartiennent bien. Dans le cas contraire, la mise à jour est rejetée si la
clause WITH CHECK OPTION est présente.

2
Une vue présente plusieurs intérêts :

Eviter de taper une longue requête à maintes reprises

Elle permet d'apporter une couche d'abstraction au modèle physique de


données

Masquer certaines données à certains utilisateurs.

Utilisation d’une vue comme si elle était une table :


Une vue s'utilise exactement comme une table dans les requêtes SQL, cela
facilite donc l'écriture des requêtes

Exemple : Création d'une vue constituant une restriction de la table emp aux
employés du département 10.

CREATE VIEW emp10 AS

SELECT * FROM emp

WHERE n_dept = 10 ;

Le CHECK OPTION permet de vérifier que la mise à jour ou l'insertion


faite à travers la vue ne produisent que des lignes qui font partie de la
sélection de la vue. Ainsi donc, si la vue emp10 a été créée avec CHECK
OPTION on ne pourra à travers cette vue ni modifier, ni insérer des
employés ne faisant pas partie du département 10.

Modification au travers d'une vue


Les instructions de mise a jour de la vue doivent être traduites en mise a jour
sur les tables de base. Ceci n'est pas possible dans le cas général. Voici
quelques restrictions que donne Oracle pour pouvoir modifier une vue :

 le SELECT définissant la vue ne doit pas comporter de jointure,


 les colonnes résultat du SELECT doivent être des colonnes réelles et non
pas des expressions. Ainsi La vue ne doit pas contenir :

3
o un opérateur ensembliste

o un opérateur DISTINCT

o Une fonction de groupe, ou une fonction mathématique

o Une clause GROUP BY, ORDER BY

Si on veut créer une vue modifiable avec une jointure, les instructions DML
que l'on peut effectuer sont restreintes et ne peuvent concerner qu'une seule
table.

Exemple :

Modification des salaires du département 10 à travers la vue emp10.

UPDATE emp10 SET sal = sal *1.1;

Toutes les lignes de la table emp, telles que le contenu de la colonne n_dept
est égal à 10 seront modifiées.

On peut interdire de modifier une vue, avec l'option WITH READ ONLY.

Supprimer une vue :


Une vue peut être détruite par la commande :

DROP VIEW nom_vue;

La suppression d’une vue n’entraine pas la suppression des données.

Renommer une vue :


On peut renommer une vue par la commande :

RENAME ancien_nom TO nouveau_nom;