Esercitazione 4: Trigger in DB2

Documenti analoghi
Esercitazione 1 SQL: DDL e DML di base

Esercitazione 1 SQL: DDL e DML di base

Esercitazione 1 SQL: DDL e DML di base

Soluzione esercitazione 01

Il sistema IBM DB2. Sistemi Informativi T. Versione elettronica: L01.1.IntroduzioneDB2.pdf

Esercitazione 1: DB-MAIN e modello E/R

Ese1: DB-MAIN e modello E/R

Errata Corrige dell edizione 2007

Universita di Milano Bicocca Corso di Basi di dati 1 in elearning C. Batini 6. SQL DDL 6.2 Data Description Language - 2

Esercitazione 4 SQL: cataloghi e viste

Esercitazione 3: progettazione logica

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Esercitazione 03: JDBC e Prepared Statements

SQL - Structured Query Language

ESEMPIO DI TRIGGER PER IL CONTROLLO DELLE PROPRIETÀ COPERTURA DI UNA GERARCHIA (ARGOMENTO SVOLTO IN CLASSE IL 25 MAGGIO 2011)

Progettazione concettuale usando il modello Entità-Relazione (ER)

ESERCITAZIONE: Fornitore-Fornisce-Articolo

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

Argomenti Corso SAP ABAP Completo Individuale

Esercitazione 3. Vincoli di integrità. Approccio Procedurale

Il tool di progettazione DB-MAIN

Silvia Chiusano, Paolo Garza 1

1. Schema concettuale della base di dati PROGETTO CONCETTUALE SCHEMA ER

Basi di Dati CREAZIONE E POPOLAMENTO DI UNA BASE DI DATI

Corso di Basi di Dati A.A. 2015/2016

La connessione ai database MySQL tramite script PHP versione 5.5

Esercitazione seconda prova Esame di Stato Prova di Informatica Gestionale ITC Programmatori e Mercurio. Note introduttive

Shell BASH. Variabili Redirezione

2011 Politecnico di Torino 1

Tecnologia delle Basi di Dati Esercitazione #4 Definizione dei trigger in Oracle

Esercitazione 01: DDL e DML di base

QL (Query Language) Alice Pavarani

SQL: le funzioni di aggregazione

Il linguaggio SQL: autorizzazioni

Manuale SQL. Manuale SQL - 1 -

D B M G Il linguaggio HTML

Lezione 4. Dallo schema ER al relazionale

Informatica. Dipartimento di Economia. Ing. Cristiano Gregnanin. 20 ottobre Corso di laurea in Economia

MODULO 2. Query normali e parametriche Query di:

SOLUZIONE SECONDA PROVA ESAME DI STATO TRAMONTANA

Basi di dati attive. Paolo Atzeni Stefano Ceri. Basi di dati attive

Esercitazione n 2. Obiettivi

Transcript:

Esercitazione 4: Trigger in DB2 Sistemi Informativi L-B Home Page del corso: http://www-db.deis.unibo.it/courses/sil-b/ Versione elettronica: esercitazione4.pdf Sistemi Informativi L-B Definire trigger con CLP Per creare dei trigger il CLP va chiamato con l opzione: DB2 -td@ che definisce @ come terminatore NB: DB2 -t definisce il terminatore di default: ; Il ; può servire nella definizione del trigger se si hanno più statement SQL nella parte di azione oppure IF Ovviamente, se il trigger è in un file: DB2 -td@ -vf <filename> Per eliminare un trigger: DROP TRIGGER <nome_trigger> Per comodità, nel seguito si richiamano alcune nozioni fondamentali relative al CLP Ese4: trigger in DB2 Sistemi Informativi L-B 2 1

CLP: Elenco opzioni Ese4: trigger in DB2 Sistemi Informativi L-B 3 Command Window Dalla finestra comandi (o modo comando del CLP ) è possibile: immettere tutti i comandi ammessi dal CLP interattivo (incluse istruzioni SQL racchiuse tra doppi apici), prefissandoli con db2 invocare comandi di sistema operativo e altri eseguibili (file.exe e.bat) Per passare da modo interattivo a modo comando: quit Ese4: trigger in DB2 Sistemi Informativi L-B 4 2

CLP: comandi Per ottenere l elenco dei comandi CLP:? Per spezzare su più righe comandi CLP e istruzioni SQL: \ Oppure invocare CLP con un terminatore Per visualizzare le tabelle del proprio schema: LIST TABLES e quelle di un altro schema: LIST TABLES FOR SCHEMA <SCHEMA NAME> Per spostarsi da uno schema all altro, e quindi poter referenziare i relativi oggetti senza dover ogni volta usare il nome del loro schema: SET CURRENT SCHEMA <SCHEMA NAME> Per vedere lo schema di una table/view: DESCRIBE TABLE <TABLE NAME> Analogamente, per vedere lo schema del risultato di una query: DESCRIBE <SQL QUERY> Ese4: trigger in DB2 Sistemi Informativi L-B 5 CLP: modalità batch Da modo comando CLP supporta input da file (opzione -f) e redirezione dell output su file (opzione -z) Ad esempio: db2 vtf C:\TEMP\sqlscript.txt z C:\TEMP\result.txt esegue lo script SQL contenuto nel file sqlscript.txt, e produce il risultato nel file result.txt Script SQL: insieme di istruzioni SQL e comandi CLP separati da ; (separatore di defult) -vtf equivale a -v (verbose) -t (separatore di default) -f La scrittura su file avviene in modalità append Ese4: trigger in DB2 Sistemi Informativi L-B 6 3

Esercizio 1 Dato lo schema concettuale: e considerando che: le entità vengono accorpate verso l alto l associazione viene tradotta a parte si generi uno schema relazionale in DB2 e si completi, facendo uso di trigger, con gli opportuni vincoli Si verifichi inoltre il corretto funzionamento, ponendo per semplicità max-card(dottore,cura) = 3 anziché 30 Ese4: trigger in DB2 Sistemi Informativi L-B 7 Esercizio 1: vincoli da esprimere 1. Se viene inserita una tupla nella tabella Cura si deve riferire ad una coppia paziente-dottore 2. Il numero massimo di pazienti assegnati per ogni dottore è 30 (3) Per rispettare il vincolo 1: prima di inserire una tupla nella forma (:paz,:doc) nella tabella Cura verificare che le seguenti query restituiscano almeno un record: select * from Persona where CF = :paz and SEL = 2 select * from Persona where CF = :doc and SEL = 1 Il vincolo 2 si esprime in maniera simile: prima di inserire una tupla nella forma (:paz,:doc) nella tabella Cura verificare che la seguente query (parzialmente specificata) NON restituisca nessun record: select Cura.doc from Cura where Cura.doc = :doc? NB: ovviamente nei trigger bisogna definire un nome per la variabile NEW e usare quello (ad es. N.doc) Ese4: trigger in DB2 Sistemi Informativi L-B 8 4

Esercizio 2 Dato lo schema concettuale: si progetti lo schema relazionale in DB2, considerando che: l entità DipartimentiLocali viene accorpata in Dipartimenti l associazione non viene tradotta a parte l attributo AnniFond indica gli anni passati dalla creazione del dipartimento l attributo AnniEsp indica gli anni di esperienza del supervisore vale la regola aziendale che i supervisori junior (con meno di 5 anni di esperienza) possono supervisionare solo i dipartimenti locali creati dopo la loro assunzione, per cui possono essere associati tramite R solo a istanze di DipartimentiLocali con AnniFond < AnniEsp Ese4: trigger in DB2 Sistemi Informativi L-B 9 Esercizio 3 (1) Partendo dai diagrammi E/R della scorsa esercitazione AUTO NUMERO_TELAIO COLORE CERCHI_LEGA CLIMATIZZATORE AIRBAG_LAT id: NUMERO_TELAIO 1 1 R MODELLO CASA NOME id: CASA NOME P NUOVA RODAGGIO USATA KM_PERCORSI Ese4: trigger in DB2 Sistemi Informativi L-B 10 5

Esercizio 3 (2) PERSONAGGI NOME COMPAGNIA id: NOME LIBRO ISBN AUTORE NUM_PAGINE id: ISBN 1 1 EDITO_DA CASA_EDITRICE RAG_SOCIALE NAZIONALITA id: RAG_SOCIALE INPE D INFANZIA INTERATTIVO ETA_MIN ETA_MAX DIZIONARIO LING_UNO LING_DUE GUIDA_TURISTICA NAZIONE Nella traduzione in modello relazionale eseguire un collasso verso l alto della gerarchia Regola aziendale: c è un accordo commerciale tra la casa editrice Elsevier e la Disney per cui i libri per bambini che hanno almeno un personaggio Disney possono essere editi solo dalla Elsevier Ese4: trigger in DB2 Sistemi Informativi L-B 11 Esercizio 3 (3) Tradurre gli schema E/R in SQL specificando: Tabelle e relativi campi Per ogni campo il dominio, e se è nullable Primary Key e Foreign Key Altri vincoli esprimibili Eseguire in DB2 il codice SQL per creare le tabelle Scrivere i trigger necessari per imporre i vincoli non espressi dallo schema E/R o relazionale impostando messaggi di errore significativi in caso di inserimenti che non li rispettino e inserire tali trigger in DB2 Verificare la correttezza dell esercizio, con degli inserimenti (l ordine degli inserimenti conta): 5 inserimenti validi per ogni tabella 3 inserimenti non validi per vincoli di tupla o integrità 3 inserimenti non validi che attivano i trigger Ese4: trigger in DB2 Sistemi Informativi L-B 12 6