Vue

Une base de données n’a pas besoin d’interface graphique pour fonctionner. Et c’est très perturbant lorsque l’on débute avec ces outils. Alors il existe des outils variés qui permettent de représenter la structure d’une base de données (le MCD de Merise) et les données qui se trouvent à l’intérieur (PhpMyAdmin pour MySql par exemple). Mais cela ne suffit pas et ne doit pas être confondu avec les vues.

Pour des raisons de rapidité d’accès et de simplification, il existe les vues. Les vues sont des requêtes préparées à l’avance dont les paramètres (mais pas les résultats) sont stockés dans la base de données. Les interrogations complexes sont ainsi optimisées : en enregistrant un modèle plutôt qu’en le préparant de A à  Z à chaque fois, l’utilisateur va plus vite et fait moins d’erreurs.

Concrètement, la base de données stocke la requête qui peut ensuite être appelée (une vue a un nom) et exécutée. Grâce à ce nom, on peut ensuite les utiliser tels des tables dans les requêtes. C’est pratique, rapide et génère des requêtes plus lisibles tout en masquant la complexité sous-jacente.

Les vues ont d’autres caractéristiques :

  • Une vue peut masquer certaines données. Étant une requête, la vue n’affiche que les informations souhaitées. Elle permet ainsi d’extraire des données choisies et de masquer des données non souhaitées.
  • Certains SGBD permettent de stocker les résultats des vues et peuvent faire office de mémoire tampon (cache).
  • Les vues ne prennent pas de place. C’est la requête qui est enregistrée (pas le résultat).
  • On peut réaliser des regroupements de données (somme, moyenne…) qui peuvent être réutilisés très facilement.
  • Les vues sont habituellement en lecture seule (d’ou le terme de « vue ») mais dans certains systèmes et sous certains conditions, on peut manipuler les données d’une vue.

Création d’une vue SQL

CREATE VIEW ToutesLesFactures AS 
 SELECT fac_id, fac_ref, cli_nom
 FROM facture, client 
 WHERE facture.cli_id = client.cli_id ;

Utilisation d’une vue SQL

Plutôt que de retaper la requête ci-dessus avec sa jointure, on peut directement appeler la vue :

SELECT * FROM ToutesLesFactures ;