Les Systèmes de Gestion de Bases de Données (SGBD) Les vues.

Slides:



Advertisements
Présentations similaires
Marta Rukoz Université Paris X - Nanterre
Advertisements

Bases de Données Avancées: Bases de Données Relationnelles
Les Systèmes de Gestion de Bases de Données (SGBD) df - normalisation.
Les Systèmes de Gestion de Bases de Données (SGBD) PL-SQL.
Les Systèmes de Gestion de Bases de Données (SGBD) Algèbre relationnelle.
Les Systèmes de Gestion de Bases de Données (SGBD) L'algèbre relationnelle.
Programme Introduction aux BD et aux SGBD Le modèle relationnel
Fonctionnalités des SGBD
INTEGRITE ET BD ACTIVES
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Les contraintes d’integrité
LMD: Langage de Manipulation de Données
Contrôles d'accès aux données
BASE DE DONNEES RELATIONNELLES
L’utilisation des bases de données
Les Systèmes de Gestion de Bases de Données (SGBD) Modèle Entité/Association.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
SQL: Contraintes et Triggers
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Contraintes et Triggers Chapitre 5,
Bases de Données Avancées - TP2: SQL
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Créer des packages.
Optimisation de requêtes
INTEGRITE ET BD ACTIVES
Surveiller et résoudre le conflit de verrouillage
(Procedural Language / Structured Query Language)
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Module 7 : Utilisation de requêtes élaborées
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
Sélection de colonnes (la projection)
Module 13 : Implémentation de déclencheurs. Vue d'ensemble Présentation des déclencheurs Définition de déclencheurs Exemples de déclencheurs Performances.
Gérer les rôles.
Les Contraintes.
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Création et Gestion de Tables
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Les vues Une vue: c’est une relation virtuelle. Définie par:
 L’information est conservée sous forme de tables  Contient: ◦ Un nom ◦ Une clé primaire ◦ Une liste de colonnes ◦ Les informations/données (sous forme.
Définition des contraintes Vérification des contraintes Triggers
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Les bases de données Séance 8 Jointures.
Module 11 : Implémentation de vues. Vue d'ensemble Présentation d'une vue Avantages liés aux vues Définition de vues Modification de données à l'aide.
Le langage SQL.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
Initiation aux bases de données et à la programmation événementielle
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
Nicolas Ribot Introduction aux triggers Nicolas Ribot - Licence GNU FDL - Version 1.1.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Cours n°2 Implémentation et exploitation
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 – Cours 3
Le Langage de Manipulation de Données LMD Module 6.
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Langages d’interrogation et de manipulation. N. ChaignaudGM4 - Base de données2 1. Algèbre relationnelle  Ensemble d’opérations permettant de manipuler.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Transcription de la présentation:

Les Systèmes de Gestion de Bases de Données (SGBD) Les vues

B.Sadeg Le Havre Bibliographie S. Abiteboul, R. Hull, V. Vianu, Foundations of Databases, Addison- Wesley J.C. Date, A Guide to the SQL Standard, Addison-Wesley J.C. Date, A Guide to DB2, Addison-Wesley R. Elmasri, S. Navathe, Conception et architecture des bases de données, 4ème ed., publié par Pearson Education. H. Garcia-Molina, J. Ullman and J. Widom, Implementation of Database Systems, Prentice Hall, G. GARDARIN, Bases de Données, Eyrolles, 6ème tirage, R. Ramakrishnan et J. Gehrke DATABASE MANAGEMENT SYSTEMS, MacGraw Hill M. SCHOLL, B. AMANN, P. RIGAUX, V. CHRISTOPHIDES, D. VODISLAV, Polycopié de Bases de Données, librairie des Arts et Métiers. Ullman J.D. and Widom J. A First Course in Database Systems, Prentice Hall, 1997 Ullman J.D. Principles of Database and Knowledge-Base Systems, 2 volumes, Computer Science Press

SQL : LES VUES

B.Sadeg Le Havre Avantages Facilité d accès à la base sécurité des données Genèse : une BD normalisée = BD éclatée en plusieurs tables => mauvaise perception de la base par les utilisateurs => beaucoup de jointures sont nécessaires pour obtenir des résultats exploitables. De plus, les tables contiennent souvent des infos supplémentaires (dates de création, auteur,..) inutiles pour l utilisateur. => Le concept de vue : permet d avoir une perception simplifiée de la BD Les vues : reconstituent une image globale de la base, plus simple et claire. Les vues : utiles pour implanter le concept de schéma externe.

B.Sadeg Le Havre Sécurité des données La notion de vue liée au concept de privilège d accès. Permet une grande souplesse d accès aux informations. Un groupe d utilisateurs -> une vue sur laquelle les membres du groupe reçoivent des droits spécifiques. Caractère dynamique d une vue Une vue est une table virtuelle. Elle n a pas d existence propre. En général, une vue = un nom + lordre SQL associé, stockés dans le DD. Lors de la création d une vue, aucun ordre SQL n est exécuté. Par définition, la vue est dynamique. Ce n est pas une table temporaire que l on crée, qui, elle, persiste après suppression de la table de base. Une vue ne peut pas exister si la (ou les) table(s) dont elle est issue sont supprimées (Toute modif. sur les tables y est répercutée immédiatement).

B.Sadeg Le Havre Création d une vue CREATE VIEW nom_vue [ (liste_de_colonnes) ] AS table_expression [WITH {CASCADE | LOCAL | CHECK OPTION}]; où table_expression est la requête SQL associée (SELECT qui peut comporter UNION, INTERSECT, …) sauf ORDER BY. Si la liste_colonnes n est absente, la vue hérite des noms de colonnes de la table associée. Parfois la liste des colonnes est obligatoire. Exemples : 1. CREATE VIEW client_paris (ref_cl, nom_cl) AS select clt_num, clt_nom FROM clients WHERE clt_loc = PARIS; 2. CREATE VIEW chif_affaire (ref_client, chiffre_a) AS SELECT cmd_clt, sum(lcd_qte * lcd_pu) FROM commandes WHERE cmd_num = lcd_cmd GROUP BY cmd_clt;

B.Sadeg Le Havre Suppression d une vue DROP VIEW nom_vue [RESTRICT | CASCADE] où RESTRICT : si cette vue intervient dans la définition d une autre vue, la commande est rejetée. CASCADE : spécifie que la vue sera supprimée ainsi que toutes les vues qui la référencent. Extraction de données à partir d une vue : idem quà partir d une table. Select * from clients_paris where nom_cl like D% ; => le moteur SQL convertit cette requête en une requête sur la table de base.

B.Sadeg Le Havre Beaucoup de vues ne sont pas modifiables : présence d une fonction de groupe et d une group by : create view nb_ventes as select count(*) from commandes; présence de la clause DISTINCT create view i_c as select distinct article_fourn, art_coul from articles; présence d une fonction arithmétique : create view articles_fb (num, prix_fb) as select art_num, art_pv/0.154 from articles; select * from articles_fb; Modification d une vue

B.Sadeg Le Havre l expression SQL associée à la vue doit être un simple SELECT : pas de jointure, ni intersect, ni union, ni distinct la clause FROM ne peut contenir quune table ou une vue, elles-mêmes modifiables pas de DISTINCT dans la clause SELECT si le SELECT contient un SELECT imbriqué, celui-ci ne peut pas faire référence à la même table que le SELECT principal pas de GROUP BY, ni de HAVING Règles à respecter pour quune vue soit modifiable (norme SQL-92, mais différentes selon les sgbd):

B.Sadeg Le Havre pour une vue modifiable uniquement. Exemple : create view cl2_paris as select clt_num, clt_nom, clt_loc, clt_pays from clienst where clt_loc= PARIS ; Cette une vue est modifiable. Mais considérons l insertion clt_loc, clt_pays : INSERT INTO cl2_paris (clt_num, clt_nom, clt_loc, clt_pays) VALUES ( C11111, TOTO, LILLE, F ); Le moteur SQL l accepte et l exécute, mais le nouveau tuple n apparaît pas dans la vue (car pas de contrôle sur la définition de la vue). => solution : clause WITH CHECK OPTION. Create view …….. where clt_loc=PARIS with check option; => Toute insertion dans la vue est contrôlée par rapport à la définition. Clause WITH CHECK OPTION

B.Sadeg Le Havre => pour la mise en œuvre de schémas externes (SE). Un SE est un ensemble de vues au travers desquelles l utilisateur voit la base. Avantages : –simplification et personnalisation de la BD, –confidentialité, –indépendance entre applications et schémas logiques, –introduction de contraintes d intégrité. Utilisation des vues

B.Sadeg Le Havre Simplification : chaque groupe d utilisateurs voit des tables simples (pas besoin de jointures complexes) confidentialité : un groupe d utilisateurs peut se voir interdire des accès à des parties de la base (sans quil le sache) car il a accès seulement à certaines vues (pour effectuer des opérations sur lesquelles il a eu des droits également) indépendance application/schémas conceptuels : Exemple : on modifie (on ajoute un num. téléph. aux clients de paris => on modifie la table de base par ALTER, mais la vue cl_paris ne change pas.

B.Sadeg Le Havre Introduction aux CI : Exemple : insertion de nouvelles lignes de commandes: create view lignes_de_commandes_validees as select * from ligne_commande where lcd_qte > 0 and lcd_liv >= 0 and lcd_liv <= lcd_qte and lcd_pu > 0.8 * (select art_pv from articles where art_num=lcd_art) and lcd_cmd IN (select cmd_num from commandes) with check option; => cette vue est modifiable (elle concerne 3 tables mais pas de jointures). => en passant par cette vue, on est sûr que seules les commandes validées sont rentrées dans la table lig_cmd.

B.Sadeg Le Havre On s arrange à ne donner l accès qu à la vue ci- dessus. La clause WITH CHECK OPTION garantit que : –la quantité commandée est >0 –la quantité livrée est > 0 et bornée par la quantité commandée –le prix_v unitaire > à 80% du prix catalogue (remise < 20%) –l article commandé doit exister. => insertion d un tuple dans la table (à travers la vue) : insert into lignes_commandes_validées values (C94823, A1456, 35, 0, 25, );

B.Sadeg Le Havre Les triggers (déclencheurs)

B.Sadeg Le Havre Egalement appelés Règles E-C-A Evénement- Condition-Action. –Evénement : un changement dans la BD, Ex : Insert into TABLE1 … –Condition : un test comme dans la clause Where, si le trigger peut être déclenché ou non –Action : une ou plusieurs instructions SQL Disponible dans Oracle et dans SQL-3 (pas dans SQL-2)

B.Sadeg Le Havre A chaque insertion d un nouveau tuple dans la relation VENDRE, on s assure que la bière mentionnée se trouve aussi dans la relation BIERE. Relations Vendre (bar, biere, prix), Biere (name) CREATE OR REPLACE TRIGGER BiereTrigg AFTER INSERT ON Vendre FOR EACH ROW WHEN (new.biere NOT IN (SELECT name FROM Biere)) BEGIN INSERT INTO Biere(name) VALUES(:new.biere); END;. Run; Rmq : on peut mettre AFTER, BEFORE ou INSTEAD (s il s agit d une vue) Au lieu de INSERT, on peut mettre DELETE ou UPDATE OF FOR EACH ROW : s il est omis, l action est exécuté une seule fois effectuant tous les changements Exemple

B.Sadeg Le Havre Il y a deux variables spéciales : new et old, qui représentent la nouvelle et l ancienne valeur du tuple à changer, Mais old n a pas de sens pour une insertion et new n a pas de sens pour une suppression Dans un WHEN, on les utilise sans les faire précéder de :, mais dans une action, les 2 points sont nécessaires.