BASES DE DONNEES RELATIONNELLE Algèbre relationnelle et SQL 4 : Compléments



Documents pareils
Java DataBaseConnectivity

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

SQL Historique

TP Programmation Java / JDBC / Oracle

OpenPaaS Le réseau social d'entreprise

Introduction à JDBC. Accès aux bases de données en Java

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Accès aux bases de données

Programmation d application Bases de données avec Java

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Administration des bases de données. Jean-Yves Antoine

Bases de données et sites WEB

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Olivier Mondet

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Notes de cours : bases de données distribuées et repliquées

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Java et les bases de données

PHP 5. La base de données MySql. A. Belaïd 1

INSIA Bases de données ORACLE Installation SQL*Plus SQL-Developer

Bases de données avancées

Le Langage SQL version Oracle

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Bases de Données relationnelles et leurs systèmes de Gestion

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Configurer la supervision pour une base MS SQL Server Viadéis Services

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

TP Contraintes - Triggers

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Le langage SQL (première partie) c Olivier Caron

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Historisation des données

Mysql. Les requêtes préparées Prepared statements

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Devoir Data WareHouse

Introduction aux Bases de Données 2004/2005

Panorama des Bases de Données

Cours Bases de données 2ème année IUT

PHP. PHP et bases de données

Pratique et administration des systèmes

Bases de données et sites WEB Licence d informatique LI345

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

420-PK6-SL Banques de données Avancées. UTILISATEURS (suite)

CREATION WEB DYNAMIQUE

Les bases de données

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

FileMaker 10. Guide ODBC et JDBC

Les BASES de DONNEES dans WampServer

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

1 Introduction et installation

Partie II Cours 3 (suite) : Sécurité de bases de données

Gestion des utilisateurs, des groupes et des rôles dans SQL Server 2008

Bases de Données Avancées PL/SQL

Intégrité des données

Cours Bases de données 2ème année IUT

CATALOGUE FORMATIONS DOMAINE Bases de données

1. Langage de programmation Java

Le langage SQL Rappels

JDBC le langage Java XVI-1 JMF

Langage SQL : créer et interroger une base

Introduction à MySQL (ou MySQL en 3 heures montre en main)

Intégrité sémantique dans les bases de données relationnelles

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

PHP 4 PARTIE : BASE DE DONNEES

Cours: Administration d'une Base de Données

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

Exploitation de bases de données relationnelles et orientées objet IFT287

Introduction au Système de Gestion de Base de Données et aux Base de Données

Modélisation et Gestion des bases de données avec mysql workbench

Gestion des utilisateurs et de leurs droits

Auto-évaluation Oracle: cours de base

TP Bases de données réparties

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Construire une base de donnée pour bibliothèque

I. MySQL : Serveur et SGBD

PHP et les Bases de données - Généralités

Connectivité aux bases de données Java (JDBC)

Bases de données relationnelles

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Application web de gestion de comptes en banques

A QUOI SERVENT LES BASES DE DONNÉES?

//////////////////////////////////////////////////////////////////// Administration bases de données

Installation et Mise en œuvre de MySQL

Les déclencheurs. Version 1.0. Grégory CASANOVA

Transcription:

EPSI Paris 70 rue Marius Aufan 92300 LEVALLOIS PERRET http://www.epsi.fr/campus/campus-de-paris BASES DE DONNEES RELATIONNELLE Algèbre relationnelle et SQL 4 : Compléments B. LIAUDET Algèbre Relationnelle et SQL - 4 - page 1/15 - Bertrand LIAUDET

SOMMAIRE SOMMAIRE 2 COMPLEMENTS DE SQL 3 1. Gestion des utilisateurs et de leurs droits 3 2. Gestion des transactions 5 3. Le dictionnaire des données : la BD Information schema 7 4. PL-SQL : procédure et fonction 10 5. Déclencheur (trigger) 11 6. Intégration dans une application 13 Edition : août 2011 Algèbre Relationnelle et SQL - 4 - page 2/15 - Bertrand LIAUDET

COMPLEMENTS DE SQL 1. Gestion des utilisateurs et de leurs droits Principes Présentation La BD est utilisée par de nombreux utilisateurs. Le SGBD permet de gérer des utilisateurs (CMS) et particulièrement de définir les droits de consultation, création, modification, suppression pour les tables, les attributs et les tuples de la BD. Notions de sécurité La gestion des utilisateurs relève de la politique de sécurité. En limitant les accès des utilisateurs, on limite les possibilités de piratage en tout genre. CREATE USER La commande CREATE USER permet de créer un utilisateur. Exemple CREATE USER toto IDENTIFIED BY monmotdepasse ; On peut aussi utiliser le GRANT pour créer un utilisateur. DROP USER La commande DROP USER permet de créer un utilisateur. Exemple DROP USER toto CASCADE ; GRANT Exemples La commande GRANT sert au propriétaire d une table à donner certains droits sur cette table à d autres utilisateurs. Donner le droit à l utilisateur 1 de consulter la table emp : GRANT SELECT ON proprio.emp TO utilisateur1; Consultation et insertion : Algèbre Relationnelle et SQL - 4 - page 3/15 - Bertrand LIAUDET

GRANT SELECT, INSERT ON proprio.emp TO utilisateur1; Tous les droits pour deux utilisateurs : GRANT ALL ON proprio.emp TO utilisateur1, utilisateur2; Consultation pour tous les utilisateurs : GRANT SELECT ON proprio.oeuvres TO PUBLIC; Limiter les droits à certains attributs GRANT SELECT (ename, job, deptno) ON proprio.emp TO PUBLIC; Utilisation des rôles prédéfinis GRANT CONNECT, RESOURCE TO Bertrand ; CONNECT est un rôle prédéfini qui permet la création de tables et donc leur modification, suppression, consultation. RESOURCE est un rôle prédéfini qui permet de faire du PL-SQL : création de triggers et de procédures stockées. DBA donne tous les privilèges. REVOKE Exemples Inversement, la commande REVOKE permet de supprimer des droits. Suppression du droit d insertion de l utilisateur 1 : REVOKE INSERT ON emp FROM utilisateur1; Suppression de tous les droits : REVOKE ALL PRIVILEGES ON emp FROM utilisateur1; Algèbre Relationnelle et SQL - 4 - page 4/15 - Bertrand LIAUDET

2. Gestion des transactions Présentation Une transaction est un ensemble de requêtes élémentaires du DML (insert, update, delete) qui doivent être exécutées ensemble pour maintenir la cohérence de la base. Une transaction doit être ACID : Atomique : tout ou rien Cohérente : maintenir la cohérence de la BD Isolée : être indépendantes des autres transactions Durable : ses effets doivent être persistant La durabilité est un principe de base des SGBD. La cohérence est une conséquence des contraintes d intégrité, de l atomicité et de l isolation. On va donc surtout s intéresser aux problème de l atomicité et de l isolation. Atomicité : le problème des pannes COMMIT et ROLLBACK Pour être atomique, une transaction doit valider toutes ses requêtes élémentaires ou aucunes. SAVEPOINT : permet de marquer le début de la transaction. COMMIT : permet de valider la transaction : toutes les requêtes élémentaires sont désormais validées durablement. ROLLBACK : tant que le COMMIT n est pas exécuté, un ROLLBACK permet de revenir au précédent SAVEPOINT. C est ce que fera automatiquement le système en cas de panne au milieu de la transaction. SAVEPOINT automatique Toute connexion au serveur génère un SAVEPOINT automatique. Tout COMMIT génère un SAVEPOINT automatique. COMMIT manuel L instruction COMMIT peut être passée manuellement à tout moment. COMMIT automatique Si la variable AUTOCOMMIT est à vrai, chaque instruction du DML est suivie automatiquement par un COMMIT. Toute instruction du DDL génère automatiquement un COMIIT. Toute déconnexion «propre» d un utilisateur (disconnect ou exit) génère automatiquement un COMMIT. Algèbre Relationnelle et SQL - 4 - page 5/15 - Bertrand LIAUDET

Isolation : le problème de la concurrence Présentation Pour éviter que deux utilisateurs ne modifient en même temps une donnée, les instructions de modifications de données (insert, update et delete) verrouillent les lignes sur lesquelles elles travaillent. En contexte transactionnel cette gestion se complique du fait que la transaction traite plusieurs requêtes élémentaires. Le «niveau d isolation» va définir la visibilité des modifications en cours dans une transaction. Si une transaction n est pas isolée, un autre utilisateur voit les états intermédiaires avant le commit. Si une transaction est isolée, un autre utilisateur ne voit pas les états intermédiaires mais ne voit que l état qui précède la transaction et le résultat du commit de la transaction. Le problème de l isolation peut être en partie contourné comme celui de l atomicité. Algèbre Relationnelle et SQL - 4 - page 6/15 - Bertrand LIAUDET

3. Le dictionnaire des données : la BD Information schema Présentation Le dictionnaire des données contient des méta-données : des données sur les données. Le dictionnaire des données contient toutes les informations sur tous les objets gérés par le serveur : les tables, les attributs, les contraintes, les index, les utilisateurs, les droits, etc. Normalement, c est une vue construite à partir des données existants effectivement. Elle n est pas modifiable. Usages Le dictionnaire des données permet de : Consulter l état de la base Ecrire des programmes qui auront des listes d utilisateurs, de tables ou d attributs, par exemple, en paramètre. Dictionnaire MySQL Présentation http://dev.mysql.com/doc/refman/5.0/fr/information-schema.html MySQL contient deux bases de données par défaut pour gérer les données du SGBD : la BD MySQL : première version du dictionnaire des données, principalement pour gérer les droits. Les tuples de cette BD sont modifiables directement. la BD information_shéma : dictionnaire des données plus standard apparu en version 5. Exemples d usage Liste des tables du serveur select table_schema, table_name from information_schema.tables ; Ré-écriture de DESC avec le dictionnaire des attributs drop procedure if exists desc2; delimiter // Create procedure desc2(v_nomtable varchar(64), v_nomschema varchar(64)) BEGIN SELECT c.column_name as Nom, c.column_type as Type, c.is_nullable as NULL, CASE WHEN k.column_name=c.column_name THEN Oui ELSE Non END as Key, c.column_default as Extra FROM information_schema.columns c Algèbre Relationnelle et SQL - 4 - page 7/15 - Bertrand LIAUDET

LEFT OUTER JOIN information_schema.key_column_usage k ON (k.column_name=c.column_name AND k.table_name= c.table_name AND k.table_schema= c.table_schema AND k.constraint_name= PRIMARY ) WHERE c.table_name=v_nomtable AND c.table_schema=v_nomschema; END; // delimiter ; Algèbre Relationnelle et SQL - 4 - page 8/15 - Bertrand LIAUDET

Dictionnaire ORACLE Les vues du dictionnaire des données Le dictionnaire des données contient les vues préfixées par «DBA_», «ALL_» ou «USER_». Ces vues contiennent des informations sur les objets de la base. Les 3 catalogues Exemples Les vues «DBA_» contiennent des informations sur tous les objets de tous les schémas. Ces vues sont en général accessibles par les utilisateurs ayant des droits d administration. Les vues «ALL_» contiennent des informations sur les objets accessibles par le groupe PUBLIC et par l utilisateur courrant. Les vues «ALL» sont les vues accessibles à tous. Les vues «USER_» contiennent les informations sur les objets accessibles par l utilisateur courant. Le catalogue est la vue contenant tous les objets accessibles. Il y a 3 catalogues : «DBA_Catalog», «ALL_Catalog» et «USER_Catalog» «CAT» est un synonyme de la vue «USER_catalog». Lister toutes les tables et d autres objets SQL> select * from cat; Lister les tables SQL> select table_name from user_tables ; Principales vues du dictionnaire des données all_catalog -- tables, sequence, synonyme, vue, environ 4000 all_objects -- 19 types d objets, environ 5000 all_views -- les vues, environ 1000 user_indexes -- les index etc. La vue des vues : all_views La vue qui contient toutes les vues du dictionnaire s appelle : «all_views» Desc all_views select count(*) from all_views ; usage de all_views La vue ALL_VIEWS va nous permettre de trouver les vues qui nous intéressent. -- pour chercher les vues qui concernent les sequences : Select view_name from all_views where view_name like «%SEQ%» ; Algèbre Relationnelle et SQL - 4 - page 9/15 - Bertrand LIAUDET

4. PL-SQL : procédure et fonction Le PL-SQL Dans la plupart des SGBD-R, il existe un langage de programmation impératif classique qui permet d écrire des successions d opérations relationnelles en utilisant les possibilités habituelles de la programmation impérative type Pascal, C ou C++ (variable, affectation, tests, boucle, exception, procédure et fonction ). PL-SQL est le nom générique de ce langage pour tous les SGBD. La syntaxe du PL-SQL est en partie standardisée. Sous Oracle, ce langage s appelle : le PL-SQL, (Procedural Language extensions to SQL). Sous SQL Server, ce langage s appelle : Transact-SQL. SQL-Server permet aussi d écrire des procédures en «CLR», c est-à-dire avec un langage.net pris en charge par le serveur (C#.NET, Visual Basic.NET) Fonctions PL-SQL Les fonctions PL-SQL pourront être utilisées dans les requêtes SQL ou dans les procédures et les fonctions PL-SQL. Procédures PL-SQL Les procédures PL-SQL pourront être utilisées dans les procédures et les fonctions PL-SQL. Elles peuvent aussi être utilisées directement par des programmes utilisant la BD. Ainsi, des tâches complexes peuvent être réalisées avec un seul accès au serveur. Les procédures ont deux usages principaux : Gérer l environnement : c est un usage administratif (administration de la base ou administration d une application) Fournir une interface de programmation pour les applications qui soient efficaces et facile à maintenir. Algèbre Relationnelle et SQL - 4 - page 10/15 - Bertrand LIAUDET

5. Déclencheur (trigger) Présentation Définition Un trigger est un programme déclenchée automatiquement quand il se passe quelque chose dans le SGBD. Classification On peut définir trois grandes catégories de trigger : Les triggers DDL Les triggers DDL Les triggers DML Les triggers de remplacement Les triggers DDL peuvent être déclenchés : sur une action du DDL : CREATE, DROP ou ALTER quand un utilisateur se connecte ou se déconnecte de la BD Ces triggers ne sont pas standards. On les trouve particulièrement dans SQL Server. Les triggers DML Un trigger est un programme associée à une table et qui est déclenchée automatiquement avant (BEFORE) ou après (AFTER) une action du DML : INSERT, UPDATE ou DELETE d un tuple de la table. Les triggers de remplacement Un trigger DML peut aussi permettre de remplacer l instruction déclenchante par une autre action. Utilité des triggers DML : trigger BEFORE et trigger AFTER Trigger BEFORE Un trigger BEFORE est un trigger qui se déclenche avant l action du DML (INSERT, UPDATE, DELETE). Il permet de : Interdire l action du DML en cas d incohérence des données saisies : on peut gérer les valeurs limites avec un trigger. La vérification se fait avant d avoir enregistré les nouvelles données. Le trigger peut alors soit interdire la modification, soit la modifier, soit la laisser s exécuter mais envoyer un message d avertissement. Reformater les données saisies : on peut passer du texte en majuscules. Algèbre Relationnelle et SQL - 4 - page 11/15 - Bertrand LIAUDET

Gérer les attributs calculés du tuple en cours de modification. Cette possibilité correspond à un trigger AFTER mais ce dernier ne peux pas s appliquer au tuple en cours de modification. Trigger AFTER Un trigger AFTER est un trigger qui se déclenche après une action du DML : INSERT, UPDATE ou DELETE. Il permet de : 1. Mettre à jour la BD du fait de la modification qu on vient d y apporter. La mise à jour se fait après avoir enregistré les nouvelles données. Cette mise à jour concerne des attributs calculés. A noter que : un trigger AFTER ne peut pas modifier de données du tuple en cours de modification. Les attributs calculés du tuple en cours de modification sont gérés par un trigger BEFORE. Algèbre Relationnelle et SQL - 4 - page 12/15 - Bertrand LIAUDET

6. Intégration dans une application Présentation Le problème Les applications développées en C++, java, PHP, etc. peuvent communiquer avec le serveur de la BDD pour consulter ou modifier les données. Standard de communication Deux grands standards de communication : ODBC : Open DataBase Connectivity, API en langage C. JDBC : Java DataBase Connectivity, API en langage Java. Ces standards sont des interfaces de programmation d'assez bas niveau permettant de transmettre des requêtes SQL à un SGBD et de récupérer les résultats. Outils plus ou moins intégrés aux SGBD ORACLE propose le PRO*C ou PRO*C++. Ce sont des outils permettant d'inclure des commandes SQL dans un source C. Il s'agit en fait d'un précompilateur : le source Pro*C est traduit en source C avec des appels aux librairies ORACLE. Ce type d outils est un peu dépassé du fait des standards ODBC et JDBC et du développement du Web et du graphisme. On peut intégrer une base de données SQL Server dans n importe quel environnement de développement de Visual Studio (Basic, C++, C#, Web Developer, ASP.Net Ajax) Certains SGBD offrent des environnements de développement graphique qui permette un développement rapide. Par exemple : ORACLE-APEX (Application Express), ou l environnement de développement 4D. Etapes de fonctionnement 1. Le client établit une connexion au serveur et à la base de son choix. 2. Le client demande l exécution d une requête 3. Le serveur exécute la requête 4. Le client récupère le résultat Exemple Java Six méthodes importantes en Java Connection DriverManager. getconnection (String url, String user, String password) Etablir la connexion au serveur Statement Connection. createstatement ( ) Algèbre Relationnelle et SQL - 4 - page 13/15 - Bertrand LIAUDET

Créer un état associé à la base ResultSet Connection. executequery (String query) Exécuter la requête «query». La méthode renvoie un ResultSet qu on va ensuite exploiter. xxx ResultSet. getxxx (int no), xxx ResultSet. getxxx (String name) Renvoie la valeur du champ n «no» ou de nom «name» d un ResultSet. bool ResultSet. next ( ) Passe au tuple suivant s il en reste encore un, sinon renvoie faux. *. close ( ) Fermetures diverses dont celle de la connexion à la BD et au serveur. Programmme type import java.io.*; import java.sql.*; public class jdbctest { public static void main(string args[]) throws ClassNotFoundException, FileNotFoundException, IOException, SQLException { String url = args[0]; String usr = args[1]; String pwd = args[2]; pwd); // Charger le pilote PostgreSQL Class.forName("org.postgresql.Driver"); try { // Se connecter a la base System.out.println("Connexion a la base " + url); Connection db = DriverManager.getConnection(url, usr, System.out.println("Connecte."); Statement st = db.createstatement(); ResultSet rs = st.executequery("select * from emp"); if (rs!= null) { // On souhaite consulter les 3 premieres lignes au plus st.setmaxrows(3); while (rs.next()) { int id = rs.getint("id"); // Recuperer la valeur d'un attribut selon son nom String nom = rs.getstring(1); // ou selon son numero String comment = rs.getstring("comment"); System.out.println("id="+id+" nom="+nom+" comment="+comment); } rs.close(); Algèbre Relationnelle et SQL - 4 - page 14/15 - Bertrand LIAUDET

} } // Fermer la connexion System.out.println("Fermeture de la connexion"); st.close(); db.close(); } } catch (Exception ex) { System.out.println("Exception levée - et non traitée"); } Algèbre Relationnelle et SQL - 4 - page 15/15 - Bertrand LIAUDET