IV.4. Le langage de contrôle des données
(LDC)
Le langage de protections d'accès (ou Data Control
Language, soit DCL en anglais) s'occupe de gérer les droits
d'accès aux tables [25].
Les instructions du DCL sont : GRANT, REVOKE.
La protection des données consiste à identifier
les utilisateurs et gérer les autorisations d'accès. Pour cela,
une mesure fondamentale est de ne fournir aux utilisateurs qu'un accès
aux tables ou aux parties de tables nécessaires à leur travail,
ce que l'on appelle des vues. Grâce à elles, chaque utilisateur
pourra avoir sa vision propre des données. Une vue
73
est définie en SQL grâce à la commande
CREATE VIEW comme résultat d'une requête d'interrogation
SELECT:
CREATE VIEW nom_vue AS SELECT ...
Cas pratique: Créer une vue
constituant une restriction de la table Employés aux noms et salaire des
employés du département 10 :
CREATE VIEW emp10 AS SELECT nom, salaire FROM employes WHERE
_num_dep = 10;
Avec ce cas pratique, il n'y a pas de duplication des
informations, mais le stockage de la définition de la vue. Une fois
créée, la vue peut être interrogée exactement comme
une table. Les utilisateurs pourront consulter la base à travers elle,
c'est-à-dire manipuler la table résultat du SELECT comme s'il
s'agissait d'une table réelle.
En revanche, il existe deux restrictions à la
manipulation d'une vue par un INSERT ou un UPDATE :
Le SELECT définissant la vue ne doit pas comporter de
jointure ;
Les colonnes résultats du SELECT doivent être des
colonnes réelles et non pas des expressions.
Cas pratique: Augmentation de 10% des
salaires du département10 à travers la vue Emp10 :
UPDATE emp10 SET salaire=salaire*1.1;
Une vue peut être supprimée ou renommée par
les commandes :
DROP VIEW nom_vue ouRENAME ancien_nom TO nouveau_nom
Une protection efficace des données nécessite en
outre d'autoriser ou d'interdire certaines opérations, sur les tables ou
les vues, aux différentes catégories d'utilisateurs. Les
commandes correspondantes sont :
GRANT type_privilege1, type_privilege2,... ON {table|vue|*} TO
utilisateur; REVOKE type_privilege1, type_privilege2,... ON {table|vue|*}FROM
utilisateur;
Les types de privilèges correspondent aux commandes SQL
(SELECT pour la possibilité d'interroger, UPDATE pour celle de mise
à jour, etc.) et les utilisateurs concernés sont
désignés par leur identifiant de connexion au serveur, ou par le
mot-clé PUBLIC pour désigner tous les utilisateurs.
Cas pratique: Autoriser la
suppression de la vue Emp10 au seul représentant du personnel
identifié par ID7788:
GRANT DELETE ON emp10 TO ID7788;
Gestion des transactions. Une transaction est un ensemble de
modifications de la base qui forment un tout indivisible, qu'il faut effectuer
entièrement ou pas du tout, sous peine de laisser la base dans un
état incohérent. SQL permet aux utilisateurs de gérer
leurs transactions:
74
la commande COMMIT permet de valider une
transaction. Les modifications deviennent définitives et visibles
à tous les utilisateurs [23];
la commande ROLLBACK permet à tout
moment d'annuler la transaction en cours. Toutes les modifications
effectuées depuis le début de la transaction sont alors
défaites [23].
Enfin, pour assurer ainsi l'intégrité de la base
en cas d'interruption anormale d'une tâche utilisateur, les SGBD dits
transactionnels utilisent un mécanisme de verrouillage qui empêche
deux utilisateurs d'effectuer des transactions incompatibles.
|