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

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

Embed Size (px)

Citation preview

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

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

Les vues

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

2006-2007

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, 1999. G. GARDARIN, Bases de Données, Eyrolles, 6ème tirage, 2005. 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

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

SQL : LES VUES

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

2006-2007

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.

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

2006-2007

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 + l’ordre 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).

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

2006-2007

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;

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

2006-2007

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.

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

2006-2007

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

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

2006-2007

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 qu’une 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 qu’une vue soit modifiable (norme SQL-92, mais différentes selon les sgbd):

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

2006-2007

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

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

2006-2007

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

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

2006-2007

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 qu’il 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.

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

2006-2007

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.

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

2006-2007

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, ‘940603’);

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

2006-2007

B.Sadeg Le Havre

Les triggers (déclencheurs)

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

2006-2007

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)

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

2006-2007

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 <attributs> FOR EACH ROW : s ’il est omis, l ’action est exécuté une seule fois

effectuant tous les changements

Exemple

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

2006-2007

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.