Les vues

Une vue permet de créer une sorte de raccourci ou d'alias évitant de réécrire une requête qui peut être complexe, elle est alors disponible comme une table virtuelle : on peut la filtrer, la requéter avec des jointures, des sous-requêtes, lui passer des hints, ...
Les vues sont notamment très utilisées lors de phase de migration lorsqu'avant d'adopter un nouveau modèle, on cherche à garder une compatibilité avec l'ancien modèle (voir l'étude de cas).
Les vues peuvent être assimilées à un traitement au niveau contrôleur, permettant de restituer des données sous une forme différente de celle implémentée physiquement.

Il existe, sous oracle un système un peu plus poussé nommé vues matérialisées (anciennement appelées snapshot), qui permet, à l'instar des index, de dupliquer physiquement les données ; cependant le processus de mise à jour n'est pas aussi simple que celui des index, ce point sera abordé dans un prochain billet.


CREATE VIEW ma_vue AS ma_requete_de_selection


Tout comme pour les tables, la commande DESC (describe) permet de décrire la vue créée.
DESC n'est pas une commande SQL, mais propre à sql*plus (TOAD l'a également implémentée), ce n'est donc dépendant que du client.

Oracle n'implémente actuellement pas encore la gestion complète des contraintes sur les vues. Il est simplement possible de les créer dans le mode DISABLE NOVALIDATE.
Cependant, ces contraintes sont transposables sur les tables origines de la vue et un système de trigger peut contourner ces limites.

Les index sont quant à eux basés sur les tables de la vue, mais ne peuvent s'appliquer sur la vue elle-même ; il existe cependant quelques astuces pour avoir un comportement se rapprochant, voir l'article sur l'optimisation de l'exécution d'une vue.




Vous n'avez pas trouver réponse à votre question ? Préciser votre recherche :

Catégories