Vous êtes sur la page 1sur 20

Page 1

Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014


Gestion des vues
Introduction
Dfinition des vues
Interrogation au travers de vues
Mise jour au travers de vues
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Dfinition
Vue : vision logique des donnes contenues dans une ou
plusieurs table .
Considre comme une table virtuelle:
Na pas dexistence propre.
Aucune donne ne lui est associe.
Sa description est stocke sous la forme dune requte.
En gnral, une vue = un nom+ lordre SQL associ, stocks dans le
dictionnaire de donnes.
Page 2
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Exemple
Pilote numP nomP ageP codeC
1 Naciri 35 AM
2 Naciri 30 AM
3 Cristine 50 AF
Pilote numP nomP ageP codeC
1 Naciri 35 AM
2 Naciri 30 AM
Vue constituant une restriction de la table Pilote :
CREATE VIEW Pilote 25_40
AS SELECT * FROM Pilote WHERE ageP between 25 and 40 ;
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Vue: utilisation
Vue peut tre utilise dans un ordre select en lieu et place
dune table.
Pilote 25_40 : table virtuelle recompose chaque appel
de la vue.
Page 3
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Vue: Avantages
Confidentialit
Les utilisateurs nont le droit daccder quaux vues.
Cacher la complexit des donnes aux utilisateurs
Vue simplifie de donnes.
Simplifier les requtes des utilisateurs non spcialistes.
Mise jour des tables transparentes aux utilisateurs
Requte complexes
Qui ne peuvent tre faites sans vues.
Qui sont frquemment ralises.
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Vue: Syntaxe
CREATE [ OR REPLACE ] VIEW nom_vue
[ liste_attributs ]
AS < expression_de_slection>
[ WITH CHECK OPTION [ CONSTRAINT
nom_contrainte ] ]
[WITH READY ONLY ]
Page 4
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Vue: Syntaxe (2)
Remarques :
Noms de colonnes facultatifs, par dfaut ceux de la
table,ncessaire si certaines des colonnes spcifies dans le
SELECT sont des expressions calcules.
OR RELACE : permet de modifier la vue sans avoir la
supprimer et la recrer.
WITH CHECK OPTION: permet de restreindre les insertions et
mise jour des donnes travers la vue aux donnes faisant
partie de la slection de la vue, avec possibilit de nommer la
contrainte.
WITH READ ONLY: interdit toute mise jour en utilisant le nom
de la vue dans un ordre insert, update, ou delete.
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Exemple 1
Page 5
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Exemple 2
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Interrogation dune vue
Page 6
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Mise jour limite travers une vue
INSERT INTO PilotesAF VALUES ('PL-10', 'Amali', 10, 'AM');
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Mise jour limite travers une vue
Ajout accepte meme si contraire au predicat de la vue
Effet de bord contraire la vue; Correction: WITH CHECK
Page 7
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Mise jour limite travers une vue
Aucun ajout ou mise a jour si elle nest pas relisible par la vue
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Mise jour limite travers une vue
Page 8
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Mise jour travers une vue
Mise jour limite travers une vue:
Insertion
INSERT INTO Pilote25_40 VALUE ( 4, Oufkir , 20 );
-> ajout accept mme si contraire au prdicat de la vue.
-> Effet de bord contraire la vue; Correction: WITH CHECK
OPTION CREATE OR REPLACE VIEW Pilote 25_40
AS SELECT * FROM Pilote WHERE ageP between 25 and 40 ;
WITH CHECK OPTION
INSERT INTO Pilote25_40 VALUE ( 4, Oufkir , 25 ) ->ajout
rejete
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Mise jour travers une vue
Modification
UPDATE Pilote25_40 SET ageP= ageP+12
-> aucun pilote mis jour avec validation de la contrainte de la
vue
Suppression
DELETE FROM Pilote25_40 ;
Page 9
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour: vue monotable
Mise a jour travers une vue dite modifiable si dans
la clause :
Select DISTINCT absent ;
Les fonctions dagrgation interdites: SUM, AVG,
Vue dfinie sur une seule table de base ou sur une autre vue
modifiable.
Aucun oprateur ensembliste: UNION, INTERSECT, ..
Aucun groupement: GROUP BY ou HAVING;
Aucune sous requte dans le WHERE qui rfrence une table
rfrence dans le 1er FROM ( autojointure ).
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour: vue monotable
1. Select DISTINCT absent
CREATE OR REPLACE VIEW Pilote 25_40
AS SELECT DISTINCT nomP, ageP FROM Pilote WHERE
ageP between 25 and 40 ;
Pilote25_40
numP nomP ageP codeC
1 Naciri 35 AM
UPDATE Pilote 25_40 SET ageP= ageP + 3 ;
-> Avec le DISTINCT, le SGBD ne sait pas quel tuple appliquer la modification
de lge.
Page 10
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour:vue monotable
2. Absence de fonctions dagrgation
chercher lage moyen pour chaque compagnie
CREATE OR REPLACE VIEW PiloteM
AS SELECT codeC, AVG( ageP) moy
FROM Pilote
Group by numC ;
PiloteM
codeC moy
AF 50
AM 35,2
UPDATE PiloteM SET moy= moy + 1 ;
-> le tuple mis jour na pas cet attribut moy
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour:vue multitable
Dfinition :Une table est dite protge par sa cl (key preserved) si
sa cl primaire est prserve dans la clause de jointure et se
retrouve en tant que colonne de la vue multitable ( joue le rle de
cl primaire de la vue).
Rgle:
Les colonnes modifies doivent appartenir une table avec
prservation ( key-preserved ):
Une MAJ est limite qu une seule table de base dont la cl est
prserve.
Exemple:
Compagnie (comp ,ville , nomComp )
Pilote (nump , nom , nbHVol, compa* )
Page 11
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour:vue multitable
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour:vue multitable
Modification accepte ( nbhvol colonne de la table pilote (key
preserved)
Page 12
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour:vue multitable
Modification rejetee ( ville colonne de la table compagnie NON (key
preserved)
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour:vue multitable
4. condition de UPDATE Dans une vue si jointure ( suite )
Pour UPDATE :
Si option WITH CHECK OPTION : on ne peut pas mettre
jour une colonne utilise dans la condition de jointure et
seules les lignes vrifiant la vue sont mises jour.
Exemple:
Compagnie (comp ,ville , nomComp )
Pilote (nump , nom , nbHVol, compa* )
Page 13
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour:vue multitable
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de mise jour:vue multitable
Page 14
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de DELETE :vue multitable
Rgle:
Jointure ne doit avoir quune seule key-preserved-table et
cette table doit apparatre une seule fois dans la vue.
Exemple:
Compagnie (comp ,ville , nomComp )
Pilote (nump , nom , nbHVol, compa* )
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de DELETE :vue multitable
Page 15
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de DELETE :vue multitable
Tuple supprime de la table pilote, mais pas de compagnie
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de Insert : vue multitable
Rgle:
Toutes les colonnes dans lesquelles sont insres des valeurs
doivent provenir dune table dont la cl primaire est prserve. Si
CHECK OPTION pas d'insertion possible
Exemple:
Compagnie (comp ,ville , nomComp )
Pilote (nump , nom , nbHVol, compa* )
Page 16
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de Insert : vue multitable
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de Insert : vue multitable
Page 17
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Conditions de Insert avec check option: vue
multitable
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Modification dune vue
Mofication dune vue ( exige le privilege ALTER VIEW ou
ALTER ANY TABLE)
SYNTAXE:
ALTER VIEW nomVue
{ ADD Contrainte | DROP
{ CONSTRAINT nomContrainte | PRIMARY KEY | UNIQUE(col1
[, col2] ) }
COMPILE ;
DROP VIEW nom_vue [ RESTRICT CASCADE]
l option RESTRICT echoue si la vue est aussi utlise par une autre vue.
Loption CASCADE permet de supprimer la vue et toute autre vue ou
contrainte la referenant.
Exemple.
DROP VIEW Pilote 25_40
Page 18
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Suppression dune vue
Suppression avec le privilege DROP ANY VIEW
SYNTAXE:
DROP VIEW nom_vue [ RESTRICT CASCADE]
l option RESTRICT echoue si la vue est aussi utlise par une autre vue.
Loption CASCADE permet de supprimer la vue et toute autre vue ou
contrainte la referenant.
Exemple.
DROP VIEW Piloteaf ;
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Trigger INSTEAD OF pour VIEW non modifiable
Un dclencheur INSTEAD OF permet de mettre jour une vue multitable qui ne pouvait tre
modifie directement par INSERT, UPDATE ou DELETE. Lexpression instead of est explicite :
le dclencheur programmera des actions au lieu dinsrer, de modifier ou de supprimer une vue.
Caractristiques:
Les dclencheurs INSTEAD OF :
font intervenir la clause FOR EACH ROW ;
ne sutilisent que sur des vues ;
ne font pas intervenir les options BEFORE et AFTER.
Remarques:
Il nest pas possible de spcifier une liste de colonnes dans un dclencheur INSTEAD OF
UPDATE, le dclencheur sexcutera quelle que soit la colonne modifie.
Il nest pas possible dutiliser la clause WHEN dans un dclencheur INSTEAD OF
Page 19
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Trigger INSTEAD OF pour VIEW non modifiable (non
standard SQL:1999)
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
suite
Page 20
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Trigger INSTEAD OF pour VIEW non modifiable
Base de donnes Avancees / M.MOURCHID, SMI, 2013-2014
Trigger INSTEAD OF pour VIEW non modifiable
Insert into Pilote values ( :new.numP, :new.nomP, null,:new.codeC)
End if ;
End;