Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.

Slides:



Advertisements
Presentazioni simili
Modulo 5 DataBase ACCESS.
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
Stored Procedure Function Trigger
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
1 Comandi per la manipolazione dei dati. 2 Tipi di comandi INSERT UPDATE DELETE COMANDI COMANDI 2.
1 Basi di dati attive. 2 Sommario Preliminari Approcci architetturali Linguaggi per la specifica di regole – Eventi – Condizioni – Azioni – Ulteriori.
DOCUMENTAZIONE DI SCHEMI E/R
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Asserzioni, Viste & Triggers
Basi di dati attive Dispongono di un sottosistema integrato per definire e gestire regole di produzione (regole attive) Regole di tipo: Evento-Condizione-Azione.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
4 – Progettazione – Introduzione e Modello E-R
SQL Structured Query Language
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Elementi di PL/SQL.
Archivio Cé necessità di immagazzinare in modo permanente grandi quantità di dati. Esempio: anagrafe dei cittadini di un comune.
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Basi di dati. Vantaggi degli archivi digitali Risparmio di spazio: sono facilmente trasferibili e duplicabili Risparmio di tempo: si può accedere ai dati.
Basi di dati attive Paolo Atzeni.
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
SQL Per la modifica di basi di dati
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Daniel Stoilov Tesi di Laurea
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
MODELLO LOGICO DEI DATI
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
Basi di Dati e Sistemi Informativi
sql: esempi di linguaggio sql nell'implementazione mysql
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
Basi di dati attive. Una base di dati che offre regole attive Si parla normalmente di trigger Trigger presentati rapidamente in precedenza Si vogliono.
SQL.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
IV D Mercurio DB Lezione 1
Modulo 5 DataBase ACCESS. Informazioni e Dati INFORMAZIONI vengono scambiate con linguaggio scritto o parlato DATI rappresentazione di informazioni in.
SQL (IV) Data Definition Language/ Data Manipulation Language.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
Elementi di PL/SQL. Pl/Sql Il PL/SQL (Procedural Language/Structured Query Language) è un linguaggio di programmazione procedurale di Oracle che costituisce.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Introduzione ai database parte seconda
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Approfondimenti SQL.
Linguaggi per basi di dati Linguaggi di definizione dei dati Utilizzati per definire gli schemi e le autorizzazioni per l’accesso Linguaggi di manipolazione.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Transcript della presentazione:

Basi di Dati attive

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone di un sottosistema integrato per definire e gestire regole di produzione (regole attive) che seguono il paradigma E (evento) – C (condizione) – A (azione) Allo stato attuale molte basi di dati relazionali sia di tipo commerciale (Oracle, MS SQL server) che open source (PostgreSQL, MySQL) possono essere considerate basi di dati attive poiché mettono a disposizione semplici regole chiamate trigger

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive3 Proprietà Comportamento reattivo – mediante l’attivazione di regole attive la base di dati è in grado di “reagire” agli eventi, in generale alle modifiche delle istanze del DB. Processore delle regole – cattura gli eventi ed esegue le regole attive determinando un alternarsi tra l’esecuzione delle transazioni, lanciate dagli utenti, e quella delle regole, lanciate dal sistema. Indipendenza della conoscenza – “azioni” sottratte ai programmi applicativi vengono codificate in regole attive, che tramite il DDL fanno parte dello schema e possono, quindi, essere condivise da tutte le applicazioni che utilizzano la base di dati attiva senza dover essere replicate negli applicativi stessi.

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive4 Il paradigma ECA Evento – è una primitiva per la manipolazione dei dati in SQL (DML): insert, update o delete Condizione – è un predicato booleano espresso in SQL (stessi operatori utilizzati per definire una condizione semplice o complessa della clausola WHERE di una selectSQL ) Azione – è in generale una sequenza di statement SQL (select, insert, update e delete) arricchita dai costrutti forniti da linguaggi di programmazione proprietari (PL/sql in Oracle, PL/pgsql in PostgreSQL) Una regola attiva è definita su una sola tabella chiamata target. La regola è attivata a seguito di un evento su tale tabella, se la condizione è verificata allora viene eseguita l’azione.

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive5 Utilità delle regole attive gestione interna (DBMS) – le regole attive possono gestire vincoli di integrità predefiniti (per es. una politica di reazione di tipo cascade per una foreign key può essere implementata con una regola attiva), calcolare attributi derivati, gestire dati duplicati e le eccezioni (per es. sollevate dalla violazione dei vincoli di integrità) gestione esterna – le regole attive permettono di codificare complesse regole aziendali (business rules) non rappresentabili in altro modo nello schema (per es. mediante check o assertion). In questo caso non esistono schemi fissi per la codifica delle regole e ciascun problema applicativo va affrontato singolarmente.

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive6 Trigger – La sintassi Problema – I trigger non sono stati definiti in SQL-92, la sintassi ed la gestione variano a seconda dello specifico DBMS utilizzato Sintassi generale per la creazione di un trigger CREATE TRIGGER NomeTrigger modalità evento {, evento} on TabellaTarget [referencing referenza] [granularità] [when (condizione)] StatementSQL

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive7 Trigger – In sintesi Attivazione Granularità Valutazione Esecuzione Un trigger in quanto regola attiva è caratterizzato dalle seguenti fasi: Attivazione, Valutazione ed Esecuzione e per ciascuna fase è possibile specificare proprietà diverse Modalità immediata (AFTER/BEFORE) Modalità differita Comporta l’esecuzione dello statementSQL che può contenere la modifica delle tuple di una tabella su cui è definito un secondo trigger che a seguito della modifica viene attivato. In altri termini, l’azione di un trigger può anche essere l’evento di un altro trigger (trigger in cascata)

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive8 Modalità: AFTER o BEFORE?? Modalità after: la valutazione avviene immediatamente dopo l’evento (caso più frequente) Modalità before: la valutazione del trigger precede logicamente l’evento a cui si riferisce Modalità differita: la valutazione avviene alla fine della transazione, a seguito del commit-work I trigger AFTER evento vengono utilizzati: 1.in applicazioni di audit, ossia nel caso in cui si devono aggiornare le tuple di una tabella B a seguito di una modifica nella tabella target A e, se esiste una clausola WHEN, solo se i nuovi dati verificano la condizione. La modalità after è necessaria poiché la modifica riuscita di una riga implica il superamento dei vincoli di integrità referenziale definiti per la tabella target e solo in questo caso il trigger viene attivato; 2.nel calcolo dei dati derivati e nella gestione delle politiche di reazione dei vincoli di integrità referenziale. I trigger BEFORE evento vengono utilizzati: 1.se si deve impostare il valore di una colonna in una riga inserita mediante un trigger, ossia se è necessario accedere ai valori “nuovi” e “vecchi” per poterli prima verificare. L’uso di un trigger AFTER INSERT non consentirebbe di impostare il valore inserito, in quanto la riga sarebbe già stata inserita nella tabella; 2.nella verifica di dati e chiavi duplicati e nella gestione delle eccezioni impedendo, in caso di errore, l’esecuzione dell’evento che ha attivato il BEFORE trigger.

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive9 Granularità & Referenza I trigger hanno due livelli di granularità: di riga (row-level): Per creare un trigger a livello di riga occorre utilizzare la clausola for each row nel comando create trigger. In questo caso il trigger viene attivato, verificato ed eseguito per ogni tupla della tabella target coinvolta dall’evento (comportamento orientato alle singole stanze). di primitiva (statement-level-è il livello di default): Per creare un trigger a livello di primitiva occorre utilizzare la clausola for each statement nel comando create trigger. In questo caso il trigger viene attivato, verificato ed eseguito una sola volta per tutte le tuple della tabella target (comportamento orientato agli insiemi). Per la definizione di un trigger è possibile fare riferimento ai “valori vecchi e nuovi” utilizzando due variabili predefinite: NEW – rappresenta la nuova tupla (esiste quando l’evento è insert oppure update) OLD – rappresenta la vecchia tupla (esiste quando l’evento è delete oppure update) Per accedere ad un campo specifico di una tupla si usa la dot notation La clausola referencing permette di rinominare tali variabili ad esempio è possibile scrivere: referencing NEW AS nuoviDati

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive10 Granularità: ROW o STATEMENT?? Le variabili NEW ed OLD sono implicitamente disponibili, per indicare la tupla nello stato precedente e successivo all’evento, solo a livello di riga. Inoltre poiché la condizione del WHEN è valutata generalmente sui valori assunti dalle tuple della tabella target se non è possibile utilizzare le variabili new ed old non è possibile esprimere neanche la condizione e pertanto viene attualmente implementata solo a livello di riga. Segue che le clausole referencing e when, rimangono sempre opzionali, ma possono essere utilizzate solo per trigger con granularità a livello di riga. I trigger FOR EACH STATEMENT vengono utilizzati: se l’azione del trigger deve essere sempre eseguita al verificarsi dell’evento su un’intera tabella. I trigger FOR EACH ROW vengono utilizzati: se l’attivazione, la valutazione o l’esecuzione di un trigger richiedono la conoscenza dello stato precedente e/o successivo all’evento.

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive11 StatementSQL Generalmente lo statementSQL si compone di due parti: una parte dichiarativa ed una esecutiva. La sintassi varia a seconda del linguaggio procedurale utilizzato. DECLARE parte dichiarativa (opzionale) BEGIN parte esecutiva END; dichiarazione di variabili con i tipi definiti da SQL-92 sequenza di istruzioni SQL (select, insert, update, delete) arricchite con strutture tipiche di ogni linguaggio procedurale quali IF [..] ELSE [..], cicli FOR e WHILE

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive12 Esempio 1: Regola aziendale TRACCIA: Creare una regola che riduca del 10% lo stipendio di tutti gli impiegati quando la media dei salari supera i 100 milioni. ANALISI: 1.L’aumento della media può avvenire a causa di un inserimento o un aggiornamento nella tabella Impiegato segue che gli eventi sono insert e update e la tabella target è Impiegato. 2.La regola va attivata subito dopo che è avvenuto l’evento che può aver aumentato la media segue che l’attivazione è immediata. 3.L’aggiornamento dello stipendio va fatto su tutte le tuple ed è attivato sulla base di una condizione (la media dei salari) che coinvolge tutte le tuple della tabella target (comportamento orientato agli insiemi) segue che la granularità è a livello di primitiva. 4.Con una granularità a livello di primitiva la clausola when non esiste quindi il valore della media va calcolato nello statementSQL come condizione della clausola where.

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive13 Esempio 1: Regola aziendale SOLUZIONE: CREATE TRIGGER ControlloStipendio after insert, update on Impiegato Begin Update Impiegato set stipendio=0,9 * stipendio where 100 < ( Select avg(stipendio) from Impiegato) end;

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive14 Esempio 2: Integrità referenziale DIPARTIMENTO(NomeDip, sede, num_dip, tel) IMPIEGATO(Codice, nome, cognome, dipart) TRACCIA: Creare una regola che reagisca alla cancellazione di un dipartimento ponendo a null il valore del campo dipart nella tabella Impiegato. SOLUZIONE: CREATE TRIGGER CancellaDipart after delete on Dipartimento for each row when (exists (Select * from Impiegato where dipart=OLD.NomeDip)) Begin Update Impiegato set dipart=null where dipart=OLD.NomeDip end;

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive15 Esempio 3: Dati derivati ORDINE(Prod, Forn, Data, qta) TOTALE(Prod, Forn, qtaTot) TRACCIA: Creare una regola che ad ogni nuovo ordine aggiorni la quantità totale ordinata. SOLUZIONE: CREATE TRIGGER AggiornaTot after insert on Ordine for each row Begin Update Totale set qtaTot=qtaTot + NEW.qta where Prod=NEW.Prod AND Forn=NEW.Forn end;

Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive16 Esempio 4: Regola aziendale BIBLIOTECA(ISBN, titolo, editore, categoria, valutazione) AUDIT_BIBLIOTECA (ISBN, timestamp_audit, titolo, editore, categoria, nuova_valutazione, vecchia_valutazione) TRACCIA: Creare una regola che memorizzi necessariamente tutte le modifiche della valutazione di un libro nella tabella di audit ma solo nel caso si verifichi una riduzione del valore della valutazione. SOLUZIONE: CREATE TRIGGER AggiornaValutazione before update on Biblioteca for each row when (NEW.valutazione<OLD.valutazione) Begin Insert into Audit_Biblioteca(ISBN, timestamp_audit, titolo, editore, categoria, nuova_valutazione, vecchia_valutazione) values(:OLD.ISBN, current_date, :OLD.titolo, :OLD.editore, :OLD.categoria, :NEW.nuova_valutazione, :OLD.vecchia_valutazione) end; La transazione eseguita sulla tabella BIBLIOTECA dipende dal successo dell’esecuzione del trigger.