MySQL 5 : Les vues — (part 4/7)
Utiliser les vues
Voici quelques exemples pratiques très simples pour illustrer les différents besoins auxquels peuvent répondre les vues. On aura ici, une vue administrateur de base de données. Les objets créés ne seront pas utilisés directement par les utilisateurs mais aux travers d’une application.
Contrôler l’intégrité en restreignant l’accès aux données pour améliorer la confidentialité
La table employe de mon application, contient toutes les informations sur les employées.
CREATE TABLE `employe` ( `id_employe` int(10) unsigned NOT NULL auto_increment, `nom` char(45) NOT NULL, `prenom` char(45) NOT NULL, `tel_perso` char(10) NOT NULL, `tel_bureau` char(10) NOT NULL, `statut` char(45) NOT NULL, `ville` char(45) NOT NULL, `salaire` decimal(7,2) NOT NULL, PRIMARY KEY (`id_employe`) ) ;
Toutes les informations présentes dans cette table ne sont pas pertinentes pour les trois types d’utilisateurs suivant: le comptable, la secrétaire pour Paris et la secrétaire pour le reste de la France.
Une solution est donc de créer une vue par type.
Pour le comptable, il faut avoir accès aux champs nom, prénom, téléphone du bureau, statut et salaire de chaque employée. On fait donc un partitionnement vertical de la table employe. La vue correspondante est la suivante :
CREATE ALGORITHM=MERGE SQL SECURITY DEFINER VIEW `v_comptable` AS SELECT nom, prenom, tel_bureau, statut, salaire FROM employe;
Le profil « secrétaire pour Paris », n’a pas besoin de l’identifiant et il ne doit surtout pas avoir accès aux salaires, cette information étant confidentielle. Autre restriction, ce profil ne gère que les employées de la filiale de Paris. Le partitionnement est vertical et horizontal.
CREATE ALGORITHM= MERGE SQL SECURITY DEFINER VIEW `v_secretaire_paris` AS SELECT nom, prenom, tel_perso, tel_bureau, statut FROM employe WHERE ville = 'Paris';
Notre troisième vue est très proche de la deuxième. La seule différence vient du fait que là, on veut les employés qui ne travaillent pas à Paris.
CREATE ALGORITHM= MERGE SQL SECURITY DEFINER VIEW `v_secretaire_autre` AS SELECT nom, prenom, tel_perso, tel_bureau, statut FROM employe WHERE ville <> 'Paris'; (à suivre… Masquer la complexité du schéma)
Architecte Solution Cloud chez Oracle
MySQL Geek, Architecte, DBA, Consultant, Formateur, Auteur, Blogueur et Conférencier.
—–
Blog: www.dasini.net/blog/en/
Twitter: https://twitter.com/freshdaz
SlideShare: www.slideshare.net/freshdaz
Youtube: https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
—–
[…] (à suivre… utiliser les vues) […]
[…] (<- précédent) […]