La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 SQL SQL Catalogues, Vues, Autorisations, Déclencheurs Witold Litwin.

Présentations similaires


Présentation au sujet: "1 SQL SQL Catalogues, Vues, Autorisations, Déclencheurs Witold Litwin."— Transcription de la présentation:

1 1 SQL SQL Catalogues, Vues, Autorisations, Déclencheurs Witold Litwin

2 2 SQL catalogues n Les catalogues SQL sont des tables gérées par le SGBD, dans la metabase –SYSTABLES : une ligne pour chaque table –SYSCOLUMNS : une ligne pour chaque colonne –SYSINDEXES : une ligne pour chaque indexe Base Metabase

3 3 SYSTABLES

4 4 SYSCOLUMNS

5 5 SYSINDEXES Pas de champ REMARKS

6 6 Requêtes aux catalogues n select TBNAME from SYSCOLUMNS where NAME = S# n select COUNT(*) from SYSTABLES where CREATOR = Witold n Mises a jour: –par le système seulement F pourquoi ?

7 7 Commande COMMENT n Pour MAJ les champs REMARKS comment on table S is 'fournisseur comment on column SP.P# is clé étrangère Õ Exercice: créer un commentaire sur SYSINDEXES

8 8 SQL Vues n Vue SQL = une table virtuelle, par opposition a une table réelle (de base) Vue SQL Vue ANSI-SPARC = Base virtuelle n Vue SQL: –Une expression de sélection mémorisée

9 9 Image d'usager d'un SGBD relationnel SQL V1V2 T1 T2 T3 T4 Virtuel Réel Physique F1 arbre-B F2 arbre-B F1 hash. V3 V4

10 10 Définition dune vue SQL n CREATE VIEW v-nom [(colonne [, colonne]...)] AS sous-requête [ WITH CHECK OPTION ] ; n CREATE VIEW good_suppliers AS SELECT S#, STATUS, CITY FROM S WHERE STATUS > 15; 15 Val. réellesVal. virtuel.

11 11 Vues SQL n Vue avec une jointure: CREATE VIEW F (f#, fnom, p#, pnom) AS SELECT (S#, SNAME, SP.P#, PNAME) FROM S,SP, P WHERE S.S# = SP.S# AND SP.P# = P.P# ;

12 12 Vues SQL n Vue avec une fonction agrégat: n CREATE VIEW PQ (P#, TOTQTY) AS SELECT P#, SUM (QTY) FROM SP GROUP BY P# ;

13 13 Mises à jour de vues n Rarement possibles en SQL: n Impossibles quand la vue : –est une projection sur attributs autres que la clé –contient une jointure –contient une fonction agrégat

14 14 CHECK OPTION n WITH CHECK OPTION protège contre les disparitions de tuples de vues: UPDATE GOOD_SUPPLIERS SET STATUS = ' 5' WHERE S# = 'S1' ; serait alors rejeté.

15 15 CHECK OPTION n WITH CHECK OPTION protège contre les disparitions de tuples de vues: UPDATE GOOD_SUPPLIERS SET STATUS = ' 5' WHERE S# = 'S1' ; serait alors rejeté. S S S S7...5 S1...5 S S S7...5 Sans CHECK OPTION

16 16 CHECK OPTION n WITH CHECK OPTION protège contre les disparitions de tuples de vues: UPDATE GOOD_SUPPLIERS SET STATUS = ' 5' WHERE S# = 'S1' ; serait alors rejeté. S S S S7...5 Avec CHECK OPTION S S S S7...5 Abort

17 17 GRANT n Le système d'autorisation de SQL GRANT SELECT ON TABLE S TO Witold ; GRANT SELECT, UPDATE (STATUS, CITY) ON TABLE S TO Witold, Edwin ; n Pourrait être aussi DELETE, INSERT GRANT ALL ON TABLE S, P TO Me, You, Him ; GRANT SELECT ON TABLE S TO PUBLIC ; GRANT INDEX ON TABLE S TO Me ; GRANT SELECT ON TABLE S TO You WITH GRANT OPTION ;

18 18 REVOKE n Révoque l'autorisation de GRANT REVOKE SELECT ON TABLE S FROM you ; n La révocation se propage à travers les autorisations de GRANT OPTION n Peut être impossible en pratique dans le SGBD répartie

19 19 Confidentialité dans SQL n GRANT & REVOKE c'est un aspect n Vues en est une autre n Les deux sont assez primitifs n On peut passer à travers de plusieurs manières: - branchement sur les lignes - accès aux fichiers... n Les anciennes procédures CODASYL ENCODE DECODE seraient fort utiles dans les SGBD relationnels !

20 20 MsAccess n La BD peut-être stockée codée –la commande ENCRYPTE/DECRYPTE n Le codage/décodage sont transparents à l'utilisation n Le cryptage en général diminue la taille de la base n Mais, on consomme + de CPU –la différence est en général invisible

21 21 Déclencheurs (triggers) n Une fonction de définition de données pour assurer les contraintes d'intégrité inter-relationnelles –intégrité référentielle surtout n Une manipulation d'une table déclenche celle d'une autre –une suppression d'un S déclenche celle de tout SP avec un même S# –une insertion dans SP déclenche la recherche dans S d'un tuple avec S# correspondant F et le refus d'insertion en cas d'échec

22 22 Déclencheurs (Exemple) n On a déclaré pour S le déclencheur D: Create Trigger D on S for Delete as Delete From SP Where SP.S# = Delete.S# ; S

23 23 Déclencheurs (Exemple) n Une requête arrive : S Delete From S Where S# = 'S1' ;

24 24 Déclencheurs (Exemple) n la requête définie dans D s'exécute S SP action déclenchée par D Delete From S Where S# = 'S1' ; Delete From SP Where S# = 'S1' ;

25 25 Déclencheurs (Résultat) S SP action déclenchée par D

26 26 Déclencheurs (Syntaxe SQL-Server, Sybase) CREATE TRIGGER ON – ::= FOR {INSERT | UPDATE | DELETE},... [WITH ENCRYPTION] AS –P a une syntaxe et le lang. de progr. arbitraires F en particulier: – IF UPDATE ( ) [{AND | OR} ],... –on peut utiliser le langage Control-of-Flow IFTHEN ELSE, CASE, WHILE, FOR... voir SQL-Server ou Sybase Encryption chiffre le commentaire sur le déclencheur dans dans syscomments

27 27 Déclencheurs (triggers) n Un déclencheur peut se référer à deux tables temporaires: –inserted F ses tuples sont des copies de ceux insérés ou mis à jour dans T par la requête qui a déclenché D –deleted F Idem pour les tuples deletés et ceux mis à jour avec les valeurs d'avant celle-ci. n Un seul déclencheur par table est permis dans SQL-Server 6.5

28 28 Exemples (SQL-Server) n Create Trigger S1 on S for delete as if (select count (*) from SP, deleted d where SP.S# = d.S#) > 0 then Begin Rollback Print "Ce fournisseur a encore des fournitures" End else Print "Fournisseur supprimé" go /* Ce déclencheur suppose le delete d'un seul tuple */ /* Les liens d'intégrité ref. dans MsAccess ne permettent pas une telle action */

29 29 Exemples (SQL-Server) n Create Trigger Test-avg on SP for update as if update Qty if (select avg (Qty) from SP, inserted i where SP.p# = i.p# ) < 10 then Begin Print "Il faut reapprovisionner cette pièce" End else if (select Qty from SP, inserted i where SP.p# = i.p# and SP.S# = i.S# ) = 0 then Begin Print "Plus de pièce de ce fournisseur" End go /* Ce déclencheur suppose la MAJ d'un seul tuple */ /* A étendre par la recherche d'un autre fournisseur de cette pièce et l'impression du message qu'il y en a ou qu'il y en n'a pas d'un tel fournisseur */

30 30 Exemples (SQL-Server) n create trigger rappel on S for update, delete -- déclencheur double as raiserror (50007, 16,10) /* Le message est un rappel qu'il faut notifier le fournisseur concerné */ n create trigger rappel on cours-FC for update, delete, insert as xp_sendmail 'Natalie', 'N'oublies pas imprimer la nouvelle liste, merci'

31 31 Exemples (SQL-Server) n Create trigger employee_insupd on employee for insert, update as smalint = = = = i.job_id From employee e, jobs j, inserted i, Where e.emp_id = i. emp_id and i.job_id = j.job_id if = 1) and (emp_lvl <> 10) begin raiserror ('si Job id 1 alors level = 10', 16, -1) rollback end else if not begin raiserror ( niveau pour job_id:%d est entre %d et @max_lvl) rollback transaction end go

32 32 Déclencheurs (Dangers etc.) n Les manipulations peuvent s'enchaîner –Un déclencheur peut déclencher un autre F on dit que la BD avec des déclencheurs devient active –les déclencheurs sont alors dits règles –16 niveaux d'enchaînement au max. SQL Server 6.5 n Les enchaînements sont difficiles à contrôler –atomicité d'une action déclanchée F oui/non ? –boucles infinies F prévenir/détecter ? –effets imprévus ("side-effects") F prévenir/détecter ?

33 33 Déclencheurs (action au-delà d'une BD) n On peut définir des déclencheurs d'actions hors la BD –multibases F BD1 -> BD2 -> BD3.... –vers d'autres systèmes F n Dans certains SGBDs les déclencheurs ne sont pas dans SQL. mais dans un langage 4GL –macros MsAccess

34 34 Déclencheurs (Exemple OK) "envoies ordre d'achat urgent de :P# à :S#"

35 35 Déclencheurs (Ex. MAJ et Danger potentiel) "envoies ordre d'achat urgent de :P# à :S#" Boucle infinie devient possible

36 36 Exercises n Test de la DF status -> city dans S n MAJs de plusieurs tuples à la fois dans les ex. précedents –nécessitent le SQL imbriqué n Création d'une table temp Chefs avec les chefs, chefs de chefs... caractérisés par leur E# et Enom), à partir de la table des Employés : –Empl (E#, Enom, Chef#) F on appelle une telle op. fermeturetransitive

37 37 FIN Manuels de DB2, SQL- Server Sybase, Oracle, MsAcces.. " SQL-2. P. Delmal. DeBoeck Université, Pour en savoir plus

38 38


Télécharger ppt "1 SQL SQL Catalogues, Vues, Autorisations, Déclencheurs Witold Litwin."

Présentations similaires


Annonces Google