SQL Catalogues, Vues, Autorisations, Déclencheurs

Slides:



Advertisements
Présentations similaires
[number 1-100].
Advertisements

1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
L’optimiseur ORACLE L’optimiseur ORACLE suit une approche classique: Génération de plusieurs plans d’exécution. Estimation du coût de chaque plan généré.
Langage de manipulation de données Ensemble de commandes permettant : – modifier la base : ajout, modification et suppression – interroger la base ex :
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Bases de données : modèlisation et SGBD
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 4 : Stockage des données, Tables dans SQL Server Bertrand Audras.
Découverte de SQL Server par la pratique pour les administrateurs expérimentés Module 5 : Accès aux données Bertrand Audras Microsoft Technology Center.
Évaluation des requêtes relationnelles
Est Ouest Sud 11 1 Nord 1 Laval Du Breuil, Adstock, Québec I-17-17ACBLScore S0417 Allez à 1 Est Allez à 4 Sud Allez à 3 Est Allez à 2 Ouest RndNE
Sud Ouest Est Nord Individuel 36 joueurs
SQL - Subtilités.
Fonctionnalités des SGBD
Directeur de Thèse : Pr. Witold Litwin
Algèbre relationnelle
Optimisation algébrique de requêtes relationnelles
1 Créer les Applications de BDs : SQL Imbriqué Witold Litwin.
La diapo suivante pour faire des algorithmes (colorier les ampoules …à varier pour éviter le « copiage ») et dénombrer (Entoure dans la bande numérique.
Georges Gardarin 1 LE LANGAGE DE REQUETES SQL l Origines et Evolutions l SQL1 86: la base l SQL1 89: l'intégrité l SQL2 92: la nouvelle norme l SQL3 98:
Optimisation de Requêtes
Analyse de la variance à deux facteurs (données déséquilibrées) Michel Tenenhaus.
2 1. Vos droits en tant quusagers 3 1. Vos droits en tant quusagers (suite) 4.
User management pour les entreprises et les organisations Auteur / section: Gestion des accès.
Les fonctions.
Français I Leçon 2B Une semaine au lycée Au Debut #7 (for the dates of November 5 and 6) Please Translate the Following: 1. I love the math course. (Adorer.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Les contraintes d’integrité
LMD: Langage de Manipulation de Données
Développement d’applications web
Contrôles d'accès aux données
10 Copyright © Oracle Corporation, Tous droits réservés. Autres concepts relatifs aux déclencheurs.
Regrouper les Données avec les Fonctions de Groupe
Mise en œuvre du langage MDX - 1 ère partie- Présentation de lexemple et des outils utilisés -1-
La compilation logicielle dEsterel v5 Gérard Berry Chaire Algorithmes, machines et langages Collège de France Cours 4, 23 avril 2013.
L’utilisation des bases de données
1 Développement des Applications des Bases de Données Chapitre 6, Sections
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Cours N°2 Base de Données & Langage SQL
1 LE LANGAGE DE REQUETES SQL Origines et Evolutions SQL1 86: la base SQL1 89: l'intégrité.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
Mise en œuvre du langage MDX
SQL: Contraintes et Triggers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
SQL partie3: Langage de définition des données
Notre calendrier français MARS 2014
1 SQL Avancé 2010 Witold Litwin 2 Quoi & Pourquoi ? n Possibilités Etendues de Manipulation de BDs relationnelles n Fondamentales pour lexploration approfondie.
1 SQL Manipulations Avancées (08-09) Witold Litwin.
C'est pour bientôt.....
Veuillez trouver ci-joint
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
Introduction.
SQL partie 3. SQL est un langage de définition de données SQL est un langage de définition de données (LDD), c'est-à-dire qu'il permet de créer des tables.
Le langage SQL LDD : Langage de Définition de Données
Modélisation des données Niveau conceptuel DON-2 V0-0.
CALENDRIER-PLAYBOY 2020.
Mise en œuvre du langage MDX
Les Chiffres Prêts?
1 Formation à l’usage éco-performant de votre pc 1 ère Partie.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Les bases de données Séance 8 Jointures.
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Bases de données : modèlisation et SGBD Séance 3.
Transcription de la présentation:

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

SQL catalogues 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

SYSTABLES

SYSCOLUMNS

SYSINDEXES Pas de champ REMARKS

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

Commande COMMENT 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

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

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

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

Vues SQL 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# ;

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

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

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

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

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

GRANT 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 ; 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 ;

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

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

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

Déclencheurs (triggers) Une fonction de définition de données pour assurer les contraintes d'intégrité inter-relationnelles intégrité référentielle surtout 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 et le refus d'insertion en cas d'échec

Déclencheurs (Exemple) 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

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

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

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

Déclencheurs (Syntaxe SQL-Server, Sybase) CREATE TRIGGER <nom D> ON <table T> < définition de D> < définition de D > ::= FOR {INSERT | UPDATE | DELETE},... [WITH ENCRYPTION] AS <programme P > P a une syntaxe et le lang. de progr. arbitraires en particulier: IF UPDATE (<attribut>) [{AND | OR} < attribut >], ... <programme P' > 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

Déclencheurs (triggers) Un déclencheur peut se référer à deux tables temporaires: inserted 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 Idem pour les tuples deletés et ceux mis à jour avec les valeurs d'avant celle-ci. Un seul déclencheur par table est permis dans SQL-Server 6.5

Exemples (SQL-Server) 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 */

Exemples (SQL-Server) 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 */

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

Exemples (SQL-Server) Create trigger employee_insupd on employee for insert, update as Declare @min_lvl tinyint, @max_lvl tinyint, @emp_lvl tinyint, @job_id smalint Select @min_lvl = min_lvl, @max_lvl = max_lvl, @emp_lvl = i.job_lvl, @job_id = 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 (@job_id = 1) and (emp_lvl <> 10) begin raiserror ('si Job id 1 alors level = 10', 16, -1) rollback end else if not (@emp_lvl) between @min_lvl and @max_lvl) begin raiserror ( niveau pour job_id:%d est entre %d et %d.', 16,-1, @job_id, @min_lvl, @max_lvl) rollback transaction end go

Déclencheurs (Dangers etc.) Les manipulations peuvent s'enchaîner Un déclencheur peut déclencher un autre 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 Les enchaînements sont difficiles à contrôler atomicité d'une action déclanchée oui/non ? boucles infinies prévenir/détecter ? effets imprévus ("side-effects")

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

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

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

Exercises Test de la DF status -> city dans S MAJs de plusieurs tuples à la fois dans les ex. précedents nécessitent le SQL imbriqué 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#) on appelle une telle op. fermeturetransitive

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