Contrôle de l'accès aux données avec des vues en SQL

click fraud protection

Base de données Les vues réduisent la complexité de l'expérience de l'utilisateur final et limitent l'accès des utilisateurs aux données contenues dans les tables de la base de données. Essentiellement, une vue utilise les résultats d'un requête de base de données pour remplir dynamiquement le contenu d'une table de base de données virtuelle.

Pourquoi utiliser des vues?

Il y a deux raisons principales pour fournir aux utilisateurs un accès aux données via des vues plutôt que de leur fournir un accès direct aux tables de la base de données:

  • Les vues offrent une sécurité simple et granulaire. Utilisez une vue pour limiter les données qu'un utilisateur est autorisé à voir dans une table. Par exemple, si vous disposez d'une table d'employés et que vous souhaitez permettre à certains utilisateurs d'accéder aux enregistrements d'employés à temps plein, vous pouvez créer une vue qui ne contient que ces enregistrements. C'est beaucoup plus facile que l'alternative (créer et maintenir une table fantôme) et garantit l'intégrité des données.
  • instagram viewer
  • Les vues simplifient l'expérience utilisateur. Les vues masquent les détails complexes de vos tables de base de données aux utilisateurs finaux qui n'ont pas besoin de les voir. Si un utilisateur vide le contenu d'une vue, il ne verra pas les colonnes du tableau qui ne sont pas sélectionnées par la vue et il se peut qu'il ne comprenne pas. Cela les protège de la confusion causée par des colonnes mal nommées, des identifiants uniques et clés de table.

Création d'une vue

La création d'une vue est assez simple: créez simplement une requête contenant les restrictions que vous souhaitez appliquer et placez-la dans la commande CREATE VIEW. Voici la syntaxe générale:

CREATE VIEW nom de vue AS

Par exemple, pour créer la vue de l'employé à temps plein, exécutez la commande suivante:

CREATE VIEW à temps plein AS
SELECT first_name, last_name, employee_id
DES employés
WHERE statut='FT';

Modification d'une vue

La modification du contenu d'une vue utilise exactement la même syntaxe que la création d'une vue, mais utilisez la commande ALTER VIEW au lieu de la commande CREATE VIEW. Par exemple, pour ajouter une restriction à la vue temps plein qui ajoute le numéro de téléphone de l'employé aux résultats, exécutez la commande suivante:

ALTER VIEW AS à temps plein
SELECT first_name, last_name, employee_id, phone
DES employés
WHERE statut='FT';

Suppression d'une vue

Il est simple de supprimer une vue d'une base de données à l'aide de la commande DROP VIEW. Par exemple, pour supprimer la vue de l'employé à temps plein, utilisez la commande suivante:

DROP VIEW à temps plein; 

Vues vs. Vues matérialisées

Une vue est une table virtuelle. UNE vue matérialisée est cette même vue écrite sur le disque et accessible comme s'il s'agissait d'une table à part entière.

Lorsque vous exécutez une requête sur une vue, la requête secondaire qui génère la vue s'exécute en temps réel, puis ces résultats sont renvoyés dans la requête principale d'origine. Si vos vues sont exceptionnellement complexes ou si votre requête principale nécessite un grand nombre de jointures de hachage entre plusieurs tables et vues, votre requête principale s'exécutera à la vitesse d'une tortue.

Une vue matérialisée accélère l'exécution de la requête car elle fonctionne comme une requête précompilée écrite sur le disque et s'exécute donc aussi rapidement qu'une table. Cependant, les vues matérialisées sont aussi bonnes que les procédures événementielles qui les actualisent. À long terme, avec une bonne maintenance, les vues matérialisées accélèrent les choses avec un petit compromis sur le temps de rafraîchissement, sans le besoin d'un tas de tables fantômes qui peuvent devenir dormantes et soit consommer de l'espace disque, soit générer les requêtes de quelqu'un d'autre de manière inappropriée.

instagram story viewer