UNITA`: trigger e viste
(Modulo didattico: estrazione di informazione)
Le interrogazioni servono per estrarre informazione da uno schema logico.
Le viste sono lo strumento per dare un nome alle interrogazioni. In questo
modo le interrogazioni si trasformano in tabelle virtuali. Le viste sono
utili per:
-
"compattare" una interrogazione complessa in un semplice nome,
-
astrarre dalle scelte progettuali dello schema logico per fornire nuove
prospettive da cui guardare i dati o per non "pubblicizzare" aspetti riservati
dei dati stessi,
-
rendere piu` independente classi di informazioni da possibili aggiornameni
strutturali dello schema logico,
-
comporre operatori aggregati o query annidate.
Le viste sono uno strumento che non pone problemi se usate solo come abbreviazioni
di interrogazioni. Diventano un problema nel momento in cui le si tratta
come tabelle a tutti gli effetti, applicando operazioni di aggiornamento.
Un'operazione di aggiornamento su una vista e` intrinsecamente non ben
definita: una vista, infatti, non e`, in generale, una tabella con (almeno)
un identificatore. In piu`, tecnicamente, l'aggiornamento di una vista
si traduce in un aggiornamento delle tabelle su cui essa si basa. Per questo
motivo, solo in situazioni molto semplici, ben definite, esiste un accordo
unanime su come si aggiorna una vista. Al di fuori di queste situazioni
i vari produttori di DBMS forniscono le loro soluzioni. La soluzione Oracle
8i per l'aggiornamento di viste inerentemente non aggiornabili e` costituita
dai trigger INSTEAD OF. In generale, i trigger sono uno strumento comune
ai DBMS. Essi sono procedure attivate da eventi all'interno del DBMS, come,
ad esempio la modifica dei valori di una tabella. In particolare, i trigger
INSTEAD OF di Oracle 8i servono per eseguire un insieme di passi che si
sostituiscono completamente alle operazioni dell'evento che innesca l'attivazione
del trigger stesso.
Prerequisiti
E` necessario conoscere i contenuti delle unita` didatticheInterrogazioni
semplici,Operatori
aggregati/raggruppamento,Quantificazione
esistenziale/universale.
Obiettivo
Apprendere a definire viste e a valutare i problemi relativi all'applicazione
di un'operazione di modifica (insert, update, delete) ad una vista. Apprendere
i dettagli fondamentali dei blocchi di codice per definire un trigger.
Attivita`
Attraverso esempi, l'unita` richiama le caratteristiche base dei trigger
"standard", fornisce una panoramica di esempi che riassumono l'utilita`
pratica dell'introduzione della nozione di vista, fornisce un esempio mirato
comprendere la definizione di viste aggiornabili in Oracle 8i, attraverso
un trigger INSTEAD OF.
Contenuti
-
Lucidi, leggibili con
AcrobatReader,
che riassumono la definizione delle viste, i problemi di aggiornabilità, e un accenno ai trigger.
In questi lucidi si fa cenno anche al problema della gestione delle dipendenze tra oggetti del sistema (tra cui appunto le viste e i trigger).
Si descrive anche brevemente il catalogo di Oracle, con una descrizione di alcune delle tabelle principali del catalogo usate per gestire le tabelle, i vincoli di integrità, le viste.
Sommario
I trigger BEFORE/AFTER possono essere usati per ottenere uno schema
logico la cui semantica sia coerente con quella espressa dallo schema concettuale
di cui e` traduzione.
Le viste sono uno strumento efficace se usate per astrarre dalla struttura
di uno schema logico. Diventano uno strumento di programmazione da trattare
con attenzione non appena si vogliono usare come tabelle a tutti gli effetti,
dato che tabelle non sono. La semantica dell'aggiornamento di viste e definible
in Oracle 8i, usando i trigger INSTEAD OF, che permettono di ridefinire
completamente una operazione di aggiornamento su una vista.
Capitoli del testo
Del capitolo 4, il paragrafo 4.8.