corr_table_2021-04-13.txt ------------------------------------------------------------------------------- employes e1, ..., en : 1. (action 1) creer villages 2. consulter villages 3. modifier villages 4. consulter sejours 5. traitement 3 clients c : 6. traitement 1 7. traitement 2 8. consulter villages pour lesquels aucun sejour 9. consulter toutes ses informations : dans client dans sejour dans village ------------------------------------------------------------------------------- le programmeur tape les grants suivants ------------------------------------------------------------------------------- 1. creer_village(v, a, p, c) : insert into village values(seq_village.nextval, v, a, p, c); grant insert on village to e1, ..., en; ce grant permet-il de faire des choses interdites ? non ------------------------------------------------------------------------------- -- 2. select * from village; grant select on village to e1, ..., en ------------------------------------------------------------------------------- -- 3. update village set capacite = capacite + 10, activite = 'kitesurf' where activite = 'resto'; grant update(capacite,activite) on village to e1, ...en ------------------------------------------------------------------------------- -- 4. select * from sejour ; grant select on sejour to e1,...en ------------------------------------------------------------------------------- -- 5. -- traitement 3 : traitement3(le_jour) : select count(*) from sejour where jour < le_jour renvoie resultat dans : le_nombre; delete sejour where jour < le_jour; retour traitement3 : le_nombre; Grant select,delete on séjour to e1,....en permet des actions interdites ? oui bonne : create procedure t3 grant execute t3 e1...en ------------------------------------------------------------------------------- -- clients : ------------------------------------------------------------------------------- -- 6. -- traitement 1 : /* modele d'ordre : traitement1(le_nom, l_age) : l_idc := seq_client.nextval; -- rem : variante par rapport a action 1 insert into client(idc, nom, age) values(l_idc, le_nom, l_age); retour traitement1 : l_idc; */ grant insert on client to c; ce grant permet-il de faire des choses interdites ? oui insérer un avoir de 1000 bonne : create proc t1 grant t1 c ------------------------------------------------------------------------------- -- 7. -- traitement 2 : /* modele d'ordre : traitement2(l_idc, la_ville, le_jour) : select idv, prix, activite from village where ville = la_ville order by prix decresc renvoie resultat dans : l_idv, le_prix, l_activite; si resultat existe alors l_ids := seq_sejour.nextval; -- rem : il faut le renvoyer insert into sejour values(l_ids, l_idc, l_idv, le_jour); update client set avoir = avoir - le_prix where idc = l_idc; sinon l_idv := -1; l_ids = -1; l_activite := 'neant'; retour traitement2 : l_idv, l_ids, l_activite; */ grant select village c grant insert sejour c grant update client c permet interdit ? oui : insert sejour sans payer bonne : create t2 grant t2 c ------------------------------------------------------------------------------- -- 8. select idv, ville, activite, prix from village where idv not in (select idv from sejour); grant select on village, sejour create view vue_8 as select idv, ville, activite, prix from village where idv not in (select idv from sejour); grant select on vue_8 to c ------------------------------------------------------------------------------- -- 9. authentification(l_idc, le_nom) : select * from client where idc = l_idc and nom = le_nom resultat dans le_client; si resultat existe alors print('bienvenue'||le_client); sinon print('desole, erreur identifiant/nom'); consulter_informations(l_idc) : select ids, idv, jour from sejour where sejour.idc = l_idc afficher toutes les lignes resultat; select village.idv, ville, activite, prix, capacite from village, sejour where sejour.idc = l_idc and village.idv = sejour.idv afficher toutes les lignes resultat; create authentification grant authentification c create consulter_infos grant consulter_infos c ------------------------------------------------------------------------------- -- the end -------------------------------------------------------------------- -------------------------------------------------------------------------------