Dans une base de données , une vue est le résultat d'une requête enregistrée qui offre à l'utilisateur une vision partielle de la base de données. Cette requête prédéfinie est stockée dans le dictionnaire de données . Contrairement aux tables de base classiques d'une base de données relationnelle , une vue ne fait pas partie du schéma physique : en tant que résultat, il s'agit d'une table virtuelle calculée ou construite dynamiquement à partir des données de la base de données lors de l'accès à cette vue. Les modifications apportées aux données de la table sous-jacente correspondante sont répercutées dans les données affichées lors des appels suivants à la vue.
Les vues peuvent présenter des avantages par rapport aux tableaux :
- Les vues peuvent représenter un sous-ensemble des données contenues dans une table. Par conséquent, une vue peut limiter le degré d'exposition des tables sous-jacentes au monde extérieur : un utilisateur donné peut être autorisé à interroger la vue, tout en se voyant refuser l'accès au reste de la table de base.
- Les vues permettent de fusionner et de simplifier plusieurs tables en une seule table virtuelle.
- Les vues peuvent servir de tableaux agrégés, où le moteur de base de données agrège les données ( somme , moyenne , etc.) et présente les résultats calculés comme faisant partie des données.
- Les vues permettent de masquer la complexité des données. Par exemple, une vue peut apparaître sous la forme Ventes2020 ou Ventes2021, partitionnant de manière transparente la table sous-jacente.
- Les vues occupent très peu d'espace de stockage ; la base de données ne contient que la définition d'une vue, et non une copie de toutes les données qu'elle présente.
- Les vues peuvent structurer les données d'une manière que les catégories d'utilisateurs trouvent naturelle et intuitive.
Tout comme une fonction (en programmation) peut fournir une abstraction , une vue de base de données peut en faire autant. Par analogie avec les fonctions, les utilisateurs de bases de données peuvent manipuler des vues imbriquées, permettant ainsi à une vue d'agréger des données provenant d'autres vues. Sans l'utilisation de vues, la normalisation des bases de données au-delà de la seconde forme normale serait beaucoup plus complexe. Les vues facilitent la création de décompositions de jointures sans perte.
De même que les lignes d'une table de base ne sont pas triées par défaut, les lignes accessibles via une vue ne le sont pas non plus. Une vue est une table relationnelle, et le modèle relationnel définit une table comme un ensemble de lignes. Puisque les ensembles ne sont pas ordonnés ( par définition ) , les lignes d'une vue ne le sont pas non plus. Par conséquent, une clause ORDER BY dans la définition de la vue est inutile ; la norme SQL ( SQL:2003 ) n'autorise pas de clause ORDER BY dans la sous-requête d'une commande CREATE VIEW, tout comme elle est interdite dans une instruction CREATE TABLE. Cependant, il est possible d'obtenir des données triées à partir d'une vue, de la même manière que pour n'importe quelle autre table , dans le cadre d'une requête sur cette vue. Néanmoins, certains SGBD (comme Oracle Database ) ne respectent pas cette restriction de la norme SQL.
Vues en lecture seule vs. vues modifiables
Les vues peuvent être définies comme étant en lecture seule ou modifiables. Si le système de base de données peut déterminer la correspondance inverse entre le schéma de la vue et le schéma des tables de base sous-jacentes, alors la vue est modifiable. Les opérations INSERT , UPDATE et DELETE peuvent être effectuées sur les vues modifiables. Les vues en lecture seule ne prennent pas en charge ces opérations car le SGBD ne peut pas répercuter les modifications sur les tables de base sous-jacentes. La mise à jour d'une vue s'effectue par préservation de la clé.
Certains systèmes prennent en charge la définition de déclencheurs INSTEAD OF sur les vues. Cette technique permet de définir une logique alternative à exécuter lors d'une opération d'insertion, de mise à jour ou de suppression sur les vues. Ainsi, les systèmes de bases de données peuvent effectuer des modifications de données à partir de vues en lecture seule. Toutefois, un déclencheur INSTEAD OF ne modifie pas le statut de lecture seule ou modifiable de la vue elle-même.