Basi di Dati
                      Basi di Dati

Vincoli, procedure e regole attive in SQL
Basi di Dati – Dove ci troviamo?
Basi di Dati Dove ci troviamo?
                                                 A) Introd...
Qualità dei dati
Qualità dei dati
    Qualità dei dati: 
      correttezza, completezza, attualità.


    In molte applica...
Vincoli di integrità generici
Vincoli di integrità generici
     Predicati che devono essere veri se valutati su istanze 
...
Esempio : gestione magazzino
Esempio : gestione magazzino
magazzino

 COD-PROD QTA-DISP QTA-RIORD
 COD PROD QTA DISP QTA R...
Esempio: definizione di MAGAZZINO
Esempio: definizione di MAGAZZINO
    CREATE TABLE MAGAZZINO AS
        (COD‐PROD CHAR(2...
Asserzioni 
Asserzioni
    Predicati espressi separatamente dalla definizione delle 
    tabelle, che devono essere veri s...
Significato dei vincoli
Significato dei vincoli
     La verifica dei vincoli può essere:
       Immediate (immediata)
    ...
Modifica dinamica del significato dei vincoli
Modifica dinamica del significato dei vincoli
    Ogni vincolo è definito di...
Procedure
 Moduli di programma che svolgono una specifica attività 
 di manipolazione dei dati
 Non standard in SQL‐2 ma p...
Esempio : prelievo dal magazzino
Esempio : prelievo dal magazzino
magazzino

 COD-PROD QTA-DISP QTA-RIORD
 1          150 ...
Specifica 
Specifica
  L’utente indica un prelievo dando il codice del prodotto e 
  la quantità da prelevare
  Se la quan...
Procedura
 INTERFACCIA
     PROCEDURE PRELIEVO (PROD INTEGER, QUANT INTEGER)
 INVOCAZIONE
     PRELIEVO(4,150)




      S...
Realizzazione della procedura
Realizzazione della procedura
 Dichiarazione variabili
 Lettura dello stato
 Se la quantità ...
Procedura
PROCEDURE PRELIEVO (PROD INTEGER, QUANT INTEGER) IS
Q1, Q2 INTEGER
Q1 Q2 INTEGER
X EXCEPTION
BEGIN
  SELECT QTA‐...
Esempio di invocazione 
Esempio di invocazione
 PRELIEVO(4,150)
           PROD=4, QUANT=150

 SELECT QTA‐DISP, QTA‐RIORD ...
Invocazione (continua) 
Invocazione (continua)
 IF Q1 < QUANT THEN RAISE(X)  non scatta
 UPDATE MAGAZZINO
 SET QTA‐DISP = ...
Regole attive (trigger)
Regole attive (trigger)
 Moduli di programma che svolgono una specifica attività 
 di manipolazion...
Paradigma evento ‐ condizione ‐ azione (ECA)
Paradigma evento condizione azione (ECA)
 Evento
     modifica alla base di d...
Esempio: gestione automatica del riordino
Esempio: gestione automatica del riordino
 EVENTO:
     UPDATE(QDISP) IN MAGAZZI...
Regola attiva (trigger)
Regola attiva (trigger)
CREATE TRIGGER GESTIONE‐RIORDINO
AFTER UPDATE OF QTA‐DISP ON MAGAZZINO
WHE...
Esecuzione dell applicazione
Esecuzione dell'applicazione
UPDATE MAGAZZINO
   SET QTA‐DISP = QTA‐DISP ‐ 150
   WHERE COD‐P...
Esecuzione del trigger
Esecuzione del trigger
 Evento
         UPDATE(QTA‐DISP) ON MAGAZZINO
 Condizione
         VERA
 Az...
Problemi di progetto per procedure e trigger
Problemi di progetto per procedure e trigger
 Decomposizione modulare delle a...
Conseguenze dell uso di procedure e trigger
Conseguenze dell’uso di procedure e trigger
 Aumenta la responsabilità dell'am...
Esercizi
  Riprendere le basi di dati per la gestione degli ordini ed 
  esprimere:
      Un vincolo di integrità che impe...
Upcoming SlideShare
Loading in …5
×

F1 Vincoli Procedure Trigger

1,220 views
1,137 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,220
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

F1 Vincoli Procedure Trigger

  1. 1. Basi di Dati Basi di Dati Vincoli, procedure e regole attive in SQL
  2. 2. Basi di Dati – Dove ci troviamo? Basi di Dati Dove ci troviamo? A) Introduzione 1 2 B) Prog. Concettuale (ER) B) Prog Concettuale (ER) C) Modello Relazionale,  ) , Algebra relazionale, SQL 1 2 3 4 5 6 7 1 2 3 4 5 6 7 D) Prog. Logica e  E) Tecnologia di un DBMS Normalizzazione 1 2 3 4 1 2 3 4 5 6 F) Programmazione DB 1 2 2 SQL: vincoli, procedure e trigger
  3. 3. Qualità dei dati Qualità dei dati Qualità dei dati:  correttezza, completezza, attualità. In molte applicazioni reali i dati sono di scarsa qualità 5% ‐ 40% di dati scorretti Per aumentare la qualità dei dati:  Per aumentare la qualità dei dati: Regole di integrità Manipolazione dei dati tramite programmi predefiniti  p p g p (procedure e trigger) 3 SQL: vincoli, procedure e trigger
  4. 4. Vincoli di integrità generici Vincoli di integrità generici Predicati che devono essere veri se valutati su istanze  corrette (legali) della base di dati tt (l li) d ll b di d ti Espressi in due modi: E ii d di negli schemi delle tabelle  come asserzioni separate come asserzioni separate Negli schemi delle tabelle si utilizza la clausola: Negli schemi delle tabelle si utilizza la clausola: CHECK (PREDICATO)  associata ai vari attributi oppure espressa al termine della  associata ai vari attributi oppure espressa al termine della dichiarazione della tabella 4 SQL: vincoli, procedure e trigger
  5. 5. Esempio : gestione magazzino Esempio : gestione magazzino magazzino COD-PROD QTA-DISP QTA-RIORD COD PROD QTA DISP QTA RIORD 1 150 100 3 130 80 4 170 50 5 500 150 riordino COD-PROD COD PROD DATA QTA-ORD QTA ORD 5 SQL: vincoli, procedure e trigger
  6. 6. Esempio: definizione di MAGAZZINO Esempio: definizione di MAGAZZINO CREATE TABLE MAGAZZINO AS (COD‐PROD CHAR(2) PRIMARY KEY  QTA‐DISP INTEGER NOT NULL CHECK (QTA‐DISP>10) QTA RIORD INTEGER NOT NULL QTA‐RIORD INTEGER NOT NULL CHECK (QTA‐RIORD>10) CHECK (QTA DISP>QTA RIORD) (QTA‐DISP>QTA‐RIORD) ) 6 SQL: vincoli, procedure e trigger
  7. 7. Asserzioni  Asserzioni Predicati espressi separatamente dalla definizione delle  tabelle, che devono essere veri se valutati su istanze  corrette (legali) CREATE ASSERTION Ordini‐Limitati AS CHECK( 1000  >=   ( SELECT COUNT(COD‐PROD) ) FROM RIORDINO ) 7 SQL: vincoli, procedure e trigger
  8. 8. Significato dei vincoli Significato dei vincoli La verifica dei vincoli può essere: Immediate (immediata) la loro violazione annulla l'ultima modifica Deferred (differita) la loro violazione annulla l'intera transazione S0 S1 S2 Sf V 8 SQL: vincoli, procedure e trigger
  9. 9. Modifica dinamica del significato dei vincoli Modifica dinamica del significato dei vincoli Ogni vincolo è definito di un tipo (normalmente  "immediate“) L'applicazione può modificare il tipo iniziale dei vincoli: set constraints immediate set constraints deferred Tutti i vincoli vengono comunque verificati, prima o poi. 9 SQL: vincoli, procedure e trigger
  10. 10. Procedure Moduli di programma che svolgono una specifica attività  di manipolazione dei dati Non standard in SQL‐2 ma presenti nei principali sistemi  relazionali Due momenti: dichiarazione (DDL) invocazione (DML) Con architettura client‐server sono:  invocate dai client  memorizzate e eseguite presso i server 10 SQL: vincoli, procedure e trigger
  11. 11. Esempio : prelievo dal magazzino Esempio : prelievo dal magazzino magazzino COD-PROD QTA-DISP QTA-RIORD 1 150 100 3 130 80 4 170 50 5 500 150 riordino COD-PROD DATA QTA-ORD 11 SQL: vincoli, procedure e trigger
  12. 12. Specifica  Specifica L’utente indica un prelievo dando il codice del prodotto e  la quantità da prelevare Se la quantità disponibile in magazzino non è sufficiente  la procedura si arresta con una eccezione Viene eseguito il prelievo, modificando la quantità  disponibile in magazzino Se la quantità disponibile in magazzino è inferiore alla  quantità di riordino si predispone un nuovo ordine  d'acquisto. 12 SQL: vincoli, procedure e trigger
  13. 13. Procedura INTERFACCIA PROCEDURE PRELIEVO (PROD INTEGER, QUANT INTEGER) INVOCAZIONE PRELIEVO(4,150) Stato iniziale nella base di dati COD-PROD QTA-DISP QTA-RIORD 4 170 50 13 SQL: vincoli, procedure e trigger
  14. 14. Realizzazione della procedura Realizzazione della procedura Dichiarazione variabili Lettura dello stato Se la quantità disponibile è insufficiente: eccezione q p Aggiornamento dello stato Se la nuova quantità disponibile è inferiore alla quantità  Se la nuova quantità disponibile è inferiore alla quantità di riordino: emissione di un ordine 14 SQL: vincoli, procedure e trigger
  15. 15. Procedura PROCEDURE PRELIEVO (PROD INTEGER, QUANT INTEGER) IS Q1, Q2 INTEGER Q1 Q2 INTEGER X EXCEPTION BEGIN SELECT QTA‐DISP, QTA‐RIORD INTO Q1, Q2 FROM MAGAZZINO  WHERE COD‐PROD = PROD; IF Q1 < QUANT THEN RAISE(X); UPDATE MAGAZZINO SET QTA‐DISP = QTA‐DISP SET QTA DISP QTA DISP ‐ QUANT WHERE COD‐PROD = PROD; IF Q1  QUANT < Q2 THEN INSERT INTO RIORDINO IF Q1 ‐ QUANT < Q2 THEN INSERT INTO RIORDINO VALUES(PROD, SYSDATE, Q2) END 15 SQL: vincoli, procedure e trigger
  16. 16. Esempio di invocazione  Esempio di invocazione PRELIEVO(4,150) PROD=4, QUANT=150 SELECT QTA‐DISP, QTA‐RIORD INTO Q1, Q2 SELECT QTA DISP QTA RIORD INTO Q1 Q2 FROM MAGAZZINO WHERE COD‐PROD = PROD; WHERE COD PROD PROD COD-PROD COD PROD QTA-DISP QTA DISP QTA-RIORD QTA RIORD 4 170 50 Q1 = 170, Q2 = 50 16 SQL: vincoli, procedure e trigger
  17. 17. Invocazione (continua)  Invocazione (continua) IF Q1 < QUANT THEN RAISE(X)  non scatta UPDATE MAGAZZINO SET QTA‐DISP = QTA‐DISP ‐ QUANT WHERE COD‐PROD = PROD COD PROD COD-PROD QTA DISP QTA-DISP QTA RIORD QTA-RIORD 4 20 50 Q1 ‐ QUANT < Q2 è vero:   Q1 QUANT < Q2 è vero: INSERT INTO RIORDINO VALUES(PROD, SYSDATE, Q2) S( O S S Q2) COD-PROD DATA QTA-RIORD 4 2004-10-10 50 17 SQL: vincoli, procedure e trigger
  18. 18. Regole attive (trigger) Regole attive (trigger) Moduli di programma che svolgono una specifica attività  di manipolazione dei dati Non standard in SQL‐2 ma presenti nei principali sistemi  relazionali Simili alle procedure, ma l'invocazione è automatica Seguono il paradigma EVENTO‐CONDIZIONE‐AZIONE 18 SQL: vincoli, procedure e trigger
  19. 19. Paradigma evento ‐ condizione ‐ azione (ECA) Paradigma evento condizione azione (ECA) Evento modifica alla base di dati Condizione predicato   Azione modifica alla base di dati, segnalazioni agli utenti Informalmente q quando accade l'evento se la condizione è vera allora si esegue l'azione g 19 SQL: vincoli, procedure e trigger
  20. 20. Esempio: gestione automatica del riordino Esempio: gestione automatica del riordino EVENTO: UPDATE(QDISP) IN MAGAZZINO CONDIZIONE: LA NUOVA QUANTITÀ DISPONIBILE È INFERIORE ALLA (NUOVA)  QUANTITÀ DI RIORDINO: NEW.Q‐DISP < NEW.Q‐RIORD AZIONE: SE LA QUANTITÀ DISPONIBILE E’ INSUFFICIENTE: ECCEZIONE EMISSIONE DI UN ORDINE 20 SQL: vincoli, procedure e trigger
  21. 21. Regola attiva (trigger) Regola attiva (trigger) CREATE TRIGGER GESTIONE‐RIORDINO AFTER UPDATE OF QTA‐DISP ON MAGAZZINO WHEN (NEW.QTA‐DISP < NEW.QTA‐RIORD) ( ) FOR EACH ROW X EXCEPTION X EXCEPTION BEGIN IF NEW.QTA‐DISP < 0 THEN RAISE(X);       IF NEW QTA DISP < 0 THEN RAISE(X); INSERT INTO RIORDINO VALUES(NEW.COD‐PROD, SYSDATE, NEW.QTA‐RIORD)  S( CO O S S Q O ) END 21 SQL: vincoli, procedure e trigger
  22. 22. Esecuzione dell applicazione Esecuzione dell'applicazione UPDATE MAGAZZINO SET QTA‐DISP = QTA‐DISP ‐ 150 WHERE COD‐PROD = PROD COD-PROD COD PROD QTA-DISP QTA DISP QTA-RIORD QTA RIORD 4 170 50 22 SQL: vincoli, procedure e trigger
  23. 23. Esecuzione del trigger Esecuzione del trigger Evento UPDATE(QTA‐DISP) ON MAGAZZINO Condizione VERA Azione IF NEW.QTA‐DISP < 0 THEN RAISE(X) non scatta  INSERT INTO RIORDINO VALUES (NEW.COD‐PROD, SYSDATE,                 NEW.QTA‐RIORD) COD-PROD DATA QTA 4 2004-10-10 50 23 SQL: vincoli, procedure e trigger
  24. 24. Problemi di progetto per procedure e trigger Problemi di progetto per procedure e trigger Decomposizione modulare delle applicazioni Paradigma di invocazione: g esplicita (procedure) implicita (trigger) Aumento di: Aumento di: Efficienza Controllo Riuso 24 SQL: vincoli, procedure e trigger
  25. 25. Conseguenze dell uso di procedure e trigger Conseguenze dell’uso di procedure e trigger Aumenta la responsabilità dell'amministratore della base  di dati (rispetto al programmatore applicativo) Si sposta "conoscenza" dalle applicazioni allo schema  della base di dati (indipendenza di conoscenza) 25 SQL: vincoli, procedure e trigger
  26. 26. Esercizi Riprendere le basi di dati per la gestione degli ordini ed  esprimere: Un vincolo di integrità che impedisce la presenza di più di 100  dettagli per ciascun ordine. d li i di Una procedura che elimina tutti gli ordini e i relativi dettagli di  un particolare cliente un particolare cliente un trigger che scatta quando viene cancellato un cliente ed  elimina tutti gli ordini e i relativi dettagli di quel cliente g g q 26 SQL: vincoli, procedure e trigger

×