NIVEAU LOGIQUE Vues
Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
table employé vue emp10bis numéro nom Johnson Scott emploi caissier analyste id 7839 nom Adams job manager dpt 30
vue : création CREATE [OR REPLACE] [ FORCE | NOFORCE ] VIEW view [ ( alias [,alias]…)] AS subquery [ WITH CHECK OPTION [CONSTRAINT constraint ] ] [ WITH READ ONLY ] subquery : SELECT complexe autorisé : join, GROUP BY, select imbriqué ; pas de ORDER BY (sera demandé dans la sélection si besoin)
exemple : création simple CREATE VIEW emp10 AS SELECT id, nom, job FROM employé WHERE dpt = 10 DESCRIBE emp10
exemple : création avec alias CREATE VIEW emp10bis AS SELECT id numéro, nom, job emploi FROM employé WHERE dpt = 10 CREATE VIEW emp10ter (numéro, nom, emploi) AS SELECT id, nom, job FROM employé WHERE dpt = 10 sélection ultérieure : emploi des noms d'alias
création : jointure, group by CREATE VIEW empdpt AS SELECT E.*, D.nom nomdpt, D.localisation FROM employé E, departement D WHERE E.dpt = D.id CREATE VIEW statdpt AS SELECT D.nom, count(*) personnel FROM employé E, departement D WHERE E.dpt = D.id GROUP BY D.id, D.nom
exemple : modification vue CREATE OR REPLACE VIEW emp10 (numéro, nom, emploi) AS SELECT id, nom, job FROM employé WHERE dpt = 10 modification de la définition maintient des droits d'accès
vue : sélection Une vue peut être interrogée comme une relation ordinaire exemple : emp10bis (numéro, nom, emploi) select * from emp10bis where emploi='manager' mise en œuvre par le serveur Oracle - recherche déf de la vue : catalogue USER_VIEWS - vérifie droits d'accès sur table(s) de base - conversion de la requête sur la vue en une requête sur table(s) de base
vue : mise à jour des données insert, update, delete : la mise à jour des données d'une vue est souvent soumise à des restrictions (respect de la cohérence globale de la base)
vue simple et complexe caractéristiquevue simplevue complexe nombre de tables11 ou plusieurs contient fonctionnonoui contient des groupes de données nonoui insert, update, delete sur la vue ouipas toujours
suppression pour vue complexe suppression d'un n-uplet interdite si la définition de la vue comporte -fonction d'agrégation -clause GROUP BY -mot clé DISTINCT
modification pour vue complexe modification d'un n-uplet interdite si la définition de la vue comporte -fonction d'agrégation -clause GROUP BY -mot clé DISTINCT -colonnes définies à l'aide d'expressions idem suppression
insertion pour vue complexe insertion d'un n-uplet interdite si la définition de la vue comporte -fonction d'agrégation -clause GROUP BY -mot clé DISTINCT -colonnes définies à l'aide d'expressions -existence de colonnes NOT NULL dans l'une des tables de base et qui n'est pas sélectionnée dans la vue idem modif.
clause WITH CHECK OPTION pour assurer que toutes les op. de m.à.j des données de la vue restent dans le domaine de la vue CREATE OR REPLACE VIEW emp10 AS SELECT * FROM employé WHERE dpt = 10 WITH CHECK OPTION CONSTRAINT emp10_ck le n° de département ne peut être modifié via la vue erreur
clause WITH READ ONLY aucune opération insert, delete, update autorisée CREATE OR REPLACE VIEW emp10 AS SELECT * FROM employé WHERE dpt = 10 WITH READ ONLY delete from emp10 where id = 103 erreur
vue : suppression DROP VIEW view ex : drop view emp10 Note : suppression de la déf. dans le dictionnaire invalidation des vues, applications qui y sont liées aucune suppression de données dans les tables
vues : conclusion Vue dérivée de données de tables, vues sous-jacentes Avantages fournis : restriction des accès à la base simplification des requêtes perception des données propre à chaque utilisateur peut être supprimée sans qu'il y ait suppression des données sous-jacentes