Systèmes de Gestion de Bases de Données Luiz Angelo STEFFENEL DUT Informatique 2ème année IUT Nancy Charlemagne
Vues Vue : une table virtuelle de la base de données dont le contenu est défini par une requête Pour l utilisateur, la vue apparaît comme un table réelle Mais elle n existe pas dans la base comme une ensemble stocké de valeurs peut représenter un sous ensemble d'une table ou alors la jonction de plusieurs tables
Vues PIECES NoPiece Description QtéStock QtéComm x01 Chaise 5 10 p02 Table de bureau 1 0 p03 Table imprimante 2 5...
Vues PIECES NoPiece Description QtéStock QtéComm x01 Chaise 5 10 p02 Table de bureau 1 0 p03 Table imprimante 2 5...
Vues PIECES NoPiece Description QtéStock QtéComm x01 Chaise 5 10 p02 Table de bureau 1 0 p03 Table imprimante 2 5...
Vues Prod Fournisseur
Vues Prod Fournisseur
Création de vue CREATE VIEW <nom vue>as <requête> [WITH CHECK OPTION]; WITH CHECK OPTION : vérifier que les tuples insérés ou mis à jour via la vue doivent satisfaire aux conditions de la question définissant la vue Ex : une vue seulement avec des voitures de la marque 'Renault' empêche l'insertion d'une voiture 'Fiat'
Exemple de vues CREATE VIEW Passager_Paris AS SELECT * FROM Passagers WHERE Ville= Paris ; CREATE VIEW Passager_Pour_Londres AS SELECT p.idp, p.nomp, r.dated, v.heure, r.idr FROM Passagers p, Réservations r, Vols v WHERE p.idp=r.idp AND r.idv=v.idv AND v.arrivée= Londres WITH CHECK OPTION ;
Suppression de vue DROP VIEW <nom vue> Supprime la vue <nom vue> du système Ne supprime pas les données
Interroger une vue Même procédure utilisée pour les tables SELECT <colonnes> from <vue> where <conditions>; Ex : SELECT nom, prénom FROM vuemarque WHERE marque='citroen';
Avantages des vues (1) Indépendance logique des programmes par rapport aux données Simplicité - facilité l accès à la base Masquer la complexité des schémas Transformer des requêtes multi tables en requêtes mono table Sécurité Un utilisateur ne peut accéder qu aux données des vues auxquelles il a droit d accès
Avantages des vues (2) Préserver la confidentialité et la personnalisation Intégrité des données Si des données sont lues ou introduites par le biais d une vue, le SGBD peut vérifier qu elles respectent les contraintes d intégrité Isolations des modifications Une vue peut présenter une image cohérente, même si les tables sont décomposées, restructurées, renommées
Inconvénients Performances Le SGBD doit toujours traduire les vues en requêtes (souvent complexes) : temps important pour exécuter une requête sur une vue Restrictions de mise à jour Une mise à jour sur une vue se répercute sur les tables composantes; les vue complexes sont en lecture seule, donc mise à jour impossible
Interrogation au travers des vues R1 F Vue Q Rn Base de données V=F(R1,, Rn) R=Q(V) R=Q( F(R1,, Rn) )
Exemple Les Vols «Air France» de Paris à Londres SELECT v.idv, v.départ, v.arrivée, v.heure FROM Vols v, Compagnies_Aériennes c, WHERE v.idc=c.idc AND c.nomc LIKE %Air%France% AND v.arrivée= Londres AND v.départ= Paris ; Une vue contenant les vols d Air France CREATE VIEW VolsAF AS SELECT v.idv, v.départ, v.arrivée, v.heure FROM Vols v, Compagnies_Aériennes c WHERE v.idc=c.idc AND c.nomc LIKE %Air%France% ; Requête sur la vue SELECT * FROM VolsAF WHERE Arrivée= Londres AND Départ= Paris ;
Vues modifiables Pas toutes les vues dont modifiables Conditions pour qu une vue soit modifiable : Le SGBD doit être capable de faire remonter chaque ligne de la vue à sa ligne source Les doubles ne doivent pas être éliminés (SELECT ne doit pas contenir DISTINCT) La clause ne doit spécifier qu une seule table (ou vue) susceptible d être mise à jour Chaque élément de la sélection doit être une référence de colonne; pas d expressions, colonnes calculées, fonctions (SUM, COUNT, etc.) La clause WHERE ne doit pas inclure des sous requêtes, JOIN, UNION, INTERSECT, EXCEPT, GROUP BY ou HAVING Les autres attributs d'une table doivent accepter la valeur NULL Sinon, vue en lecture seule