Post on 27-Sep-2020
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 1
(27 lucidi)
SistemiInformativi
e Basi di Dati
Sistema Informativo
• e' essenziale per il funzionamentodell 'azienda
• e' fortemente integrato con il sistemaorganizzativo
• comprende risorse umane
Insieme degli strumenti, risorse e procedure che consentono lagestione delle informazion i aziendali
Sistema Informatico
• assicura la generazione,
l'elaborazione, la circolazione e la
memorizzazione delle informazioni su
supp orti informatici
Insieme dei sistemi hardware e software presenti in un a azienda
Tipici esempi di sistemi informativi• applicazion i gestionali classiche gestione ordini, personale, magazzino
• app licazioni finanziarie banche, borsa, carte di credito
• sistemi di prenotazione treni, aerei, albergh i, autonoleggi• nuo ve applicazioni gestione dei progett i, del terr itorio commercio elett ron ico
Dal dato all’i nformazione
Dato :
unita' elementare (grezza) di informazioneInformazione : elaborazione dei dati per rispond ere a esigenze specifiche dell 'impresa
Compiti della tecnologiadell’i nformazione
(visione centrata sui dati)
• Immiss ione, Memorizzazione,Cancellazione dei dati
• Accesso, Elaborazione,Trasferimento : dai dati all 'informazione• Presentazione, Visualizzazione
dell 'informazione
Dai dati ai process i
PROCESSO :proceduraaziendale cherisponde ad unparticolare compitoapplicativo data
base
process i
utenti
Come analizzare i sistemiinformativi?
CRITERIO PRINCIPALE: STABILITA’ DAI DATI!
a partendo dai datib partendo d ai processi
Architettura che ne consegue
database
process i
utenti
databasemanagement
sys tem
Database Management System(DBMS)
• esistono sul mercato alcune centinaia di prodotti diversi - per uso personale - per server in un a rete - per mainframe
• sistemi software dedicati alla gestione dei dati
• principaledifferenza:gestione dei datiun itaria e
a piu' alto livello(tramitelingu aggispecializzati)
Confronto con architetturecon/senza DBMS
softwareapplicativo
sistemaoperativo
softwareapplicativo
DBMS
sistemaoperativo
file(distinti)
database(unico)
Principali caratteristiche• condivisione dei dati - assenza di replicazione nei file - concorrenza• quali ta' dei dati - vincoli di integrita'• eff icienza - caricamento, query, sort
• controllo dell'accesso - privatezza
• robustezza
Come si usa un DBMS ?
a definendo la struttura generale dei dati
b definendo le specifiche operazion i sui dati
STRUTTURA DEI DATI SUI CONTI CORRENTI
conto corrente di Giorgio Ross iconto corrente di Paolo Bianchi……………………………………….
schema
istanza
Architettura a livelli degli schemi
Schema esterno : descrizione per specifiche applicazion i
Schema logico : descrizione globale
Schema interno : descrizione dei meccanismi di gestione dei dati
Architettura a livelli degli schemi
Database
schemaesterno
applicazioni
schema logico
schema fisico
schemaesterno
applicazioni
schemaesterno
applicazioni
Perche' a tre livelli ?
Ind ipendenza logica : capacita' di offrire una visione dei dati differente ad utenti differenti
Ind ipendenza fisica: capacita' di astrarre completamente dai meccanismi di gestione dei dati
I linguaggi del DBMS
DATA DEFINITIONLANGUAGE (DDL) es: CREATE, DROP, ALTER
DATA MANIPULATIONLANGUAGE (DML) es: SELECT, INSERT, UPDATE, DELETE
Gli utenti del DBMS
Programmatori app licativi : programmano le app licazion i, usano il DML
Database administrator : programma il DDL
Utenti casuali : eseguono version i "amichevoli" del DML (query language, interfacce grafiche)Utenti finali (" terminalisti" ): eseguono le app licazion i
Gli utenti del DBMS
database
applicazioni
DBMS
utenti finali
databaseadministrator
programmatoriapplicativiutenti
casuali
I moduli del DBMS
dati
process oreDDL
databaseadministrator
programmatoreapplicativo
utentefinale
dizionariodati
utentecasuale
process oreDML
applicazione
piano d iesecuzione
query
suppo rtoesecuzione
DBMS
DBMS in uncontesto di rete
database
processoclient
utenti
databasemanagement
sys tem
retemiddleware
databaseserver
processoclient
utenti
Strumenti per realizzare applicazioni
REPORT GENERATOR : aiutano a produrre output - cartacei o su terminale - a caratteri o grafici
FORM MANAGER : aiutano a descrivere l'interazione con il database (FORM = MODULO)
APPLICATION GENERATOR(IV generation langu age) : aiutano a costruire semplici applicazioni
AMBIENTE CASE(Computer-Aided Software Engineering) : aiuta a progettare schemi e applicazioni
Struttura del corso
Parte I: Basi di dati relazionaliParte II: Progetto delle basi di datiParte III: Descrizione dei sistemi informativiParte IV: Esperienze
Obiettivi del corso
Descrizione architetturale - delle basi di dati - dei sistemi informatici - dei sistemi informativi
Per sapersi orientare - nel contesto tecnologico - negli standard industriali
Obiettivi del corso (2)
Insegnare due abilita’ di base (astratte) - progettare basi di dati - interrogare basi di dati
Il contesto tecnologico
• sistemi distribuiti su rete - facili ta' di accesso, interoperabili ta’
• sistemi multiprocessore paralleli - scalabilita' delle prestazion i
• sistemi interconness i da Internet - World-Wide-Web: la miglior interfaccia per accedere facilmente alle informazioni
• nuo ve tecnolog ie per la gestione dei dati - data warehou se, data mining
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 2
(29 lucidi)
Il modellorelazionale
dei dati
Cronologia dei modelliper la rappresentazione dei dati
• Modello gerarchico (ann i 60)
• Modello reticolare (ann i 70)
• Modello relazionale (anni 80)
• Modello a oggetti (ann i 90)
Cronologia del modellorelazionale
• Inventato da T. Codd , 1970 (IBM Research di Santa Teresa, Cal)
• Primi progetti: SYSTEM R (IBM), Ingres (Berkeley Un.)
• Principali scoperte tecnolog iche: 1978-1980• Primi sistemi commerciali : inizio ann i ‘80 (Oracle, IBM-SQL DS e DB2,
Ingres, Informix, Sybase)
• Successo commerciale: dal 1985.
Definizione informale
schema
istanza
studente
MATR
123
307
415
702
NOME
Carlo
Giovanni
Paola
Antonio
CITTA’
Bologn a
Milano
Torino
Roma
C-DIP
Inf
Log
Inf
Log
colonna schema
istanza
studente
MATR
123
307
415
702
NOME
Carlo
Giovanni
Paola
Antonio
CITTA’
Bologn a
Milano
Torino
Roma
C-DIP
Inf
Log
Inf
Log riga
schema
istanza
studente
MATR
123
307
415
702
NOME
Carlo
Giovanni
Paola
Antonio
CITTA’
Bologn a
Milano
Torino
Roma
C-DIP
Inf
Log
Inf
Log
• Prodo tto cartesiano su n do miniD1 x D2 x … Dn (non n ecessariamente
distinti): insieme delle n-ple (tuple)< d1 , d2 ,... dn >, con d i ∈∈ Di , 1 ≤≤ i ≤≤ n
Definizione formale
• Dominio D: un qu alunq ue insieme di valori
• Relazione R su D1 x D2 x... Dn : unqualunque sottoinsieme di
D1 x D2 x ... Dn .
Esempio
• D1 = (a,b)• D2 = (1,2,3)
• D1 x D2 = ( <a,1>, <b,1>, <a,2>, <b,2>, <a,3>, <b,3> )
• R1 = ( <a,1>, <b,3> )• R2 = ( <c,1>, <b,3>, <a,2> )• R3 = ( )• R4 = ( <a,1>, <b,1>, <a,2>, <b,2>,
<a,3>, <b,3> )
Proprieta'
• Grado della relazione: numero di domini (n)• Cardinali ta' della relazione: numero di tup le
• Att ributo: nome dato al dominio in un a relazione [I nomi di att ributo in un a relazione
devono essere tutti distinti fra loro]
Schema (di una relazione): tabella (att ributo1,… attributoN)[I nomi delle relazion i in uno schema devono
essere tutti distinti fra loro]
Aab
B13
Ccba
D132
R1(A,B) R2(C,D)
Proprieta'
Confronto della terminologia
DEFINIZIONE FORMALE
relazione
att ributo tupla, n-pla dominio cardinalita'grado
DEFINIZIONE INFORMALE
tabella
colonnarigatipo d i datonumero di righenumero di colonne
Una differenzasignificativa
DEFINIZIONEFORMALEassenzadi dup licatiDEFINIZIONEINFORMALEposs ibilidup licati
Esempio :gestione degli esami universitari
studente
MATR
123
415
702
NOME
Carlo
Paola
Anton io
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
Esempio :gestione degli esami universitari
corsoCOD-CORSO
1
2
TITOLO
matematica
informatica
DOCENTE
Barozzi
Meo
Esempio :gestione degli esami universitari
esameMATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
Esempio :gestione degli esami universitaristudente
MATR
123
415
702
NOME
Carlo
Paola
Anton io
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
esameMATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
corsoCOD-CORSO
1
2
TITOLO
matematica
informatica
DOCENTE
Barozzi
Meo
Interrogazioni• quali professori hanno esaminato Carlo?studente
MATR
123
415
702
NOME
Carlo
Paola
Anton io
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
esameMATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
corsoCOD-CORSO
1
2
TITOLO
matematica
informatica
DOCENTE
Barozzi
Meo
Interrogazioni• quali studenti hanno preso 30 in matematica?studente
MATR
123
415
702
NOME
Carlo
Paola
Anton io
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
esameMATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
corsoCOD-CORSO
1
2
TITOLO
matematica
informatica
DOCENTE
Barozzi
Meo
Esempio : gestione personale
impiegato
MATR
1
2
3
NOME
Piero
Giorgio
Giovanni
DATA-ASS
1-1-95
1-1-97
1-7-96
SALARIO
3 M
2,5 M
2 M
assegnamentoMATR
1
1
2
3
NUM-PROG
3
4
3
4
PERC
50
50
100
100
progettoTITOLO
Idea
Wide
TIPO
Esprit
Esprit
MATR-MGR
2
null
2
NUM-PROG
3
4
Interrogazioni
impiegato
MATR
1
2
3
NOME
Piero
Giorgio
Giovanni
DATA-ASS
1-1-95
1-1-97
1-7-96
SALARIO
3 M
2,5 M
2 M
assegnamentoMATR
1
1
2
3
NUM-PROG
3
4
3
4
PERC
50
50
100
100
progettoTITOLO
Idea
Wide
TIPO
Esprit
Esprit
MATR-MGR
2
null
2
NUM-PROG
3
4
• chi e' il manager di Piero?Interrogazioni
• in qu ali tipi di progetti lavora Giovanni?
impiegato
MATR
1
2
3
NOME
Piero
Giorgio
Giovanni
DATA-ASS
1-1-95
1-1-97
1-7-96
SALARIO
3 M
2,5 M
2 M
assegnamentoMATR
1
1
2
3
NUM-PROG
3
4
3
4
PERC
50
50
100
100
progettoTITOLO
Idea
Wide
TIPO
Esprit
Esprit
MATR-MGR
2
null
2
NUM-PROG
3
4
Esempio : gestione ordinicliente
COD-CLI INDIRIZZO P-IVA
COD-ORD COD-CLI DATA IMPORTO
COD-ORD COD-PROD QTA
COD-PROD NOME PREZZO
prodo tto
dettaglio
ordine
Interrogazioni
• quali ordini ha emesso Paolo?• quanti ordini ha emesso Paolo?• quante candele sono state ordinate il 5/7/93?• calcolare per ciascun cliente la somma degli importi di tutt i gli ordini• estrarre l'ordine di importo piu' alto
Rifless ioni
a differenza fra schema e istanza
b due att ivita' assai differenti: - progetto dello schema - gestione dell 'istanza
c passaggio dai dati all'informazione (Query langu age)
Come arr icchire lo schema?
VINCOLI DI INTEGRITA': escludono alcune istanze in quanto non rappresentano correttamente il mond o applicativo
- CHIAVI - VINCOLI SUI VALORI NULLI (POI) - INTEGRITA' REFERENZIALE (POI) - VINCOLI GENERICI (POI)
Nozione di chiave
Sottoinsieme degli att ributi delloschema che ha la proprieta' di un icita' eminimali ta'
un icita': non esistono due tuple con chiave ugu ale
minimali ta': sott raendo un qu alunq ue att ributo alla chiave si perde la proprieta' di unicita'
Chiavi nell 'esempio :gestione degli esami universitari
MATR COD-CORSO DATA VOTO
COD-CORSO TITOLO DOCENTE
studente
corso
esame
MATR NOME CITTA’ C-DIP
Chiavi nell 'esempio :gestione personale
MATR NUM-PROG PERC
NUM-PROG NOME PREZZO
impiegato
progetto
assegnamento
MATR NOME DATA-ASS SALARIO MATR-MIL
Chiavi nell 'esempio :gestione ordini
COD-CLI INDIRIZZO P-IVA
COD-ORD COD-CLI DATA IMPORTO
COD-ORD COD-PROD QTA
COD-PROD NOME PREZZO
cliente
prodo tto
dettaglio
ordine
Con molteplici chiavi:
una e' definita CHIAVE PRIMARIAle rimanenti chiavi sono SECONDARIE
CLIENTE(COD-CLIENTE,INDIRIZZO,P-IVA)
Chiave primaria: COD-CLIENTE Chiave secondaria: P-IVA
Sommario:
• Definizione formale e informale di relazione (o tabella)
• Descrizione informale di varie basi di dati relazionali e delle interrogazion i esprimibil i su d i esse
• Definizione e esempli ficazione della nozione di chiave
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 3
(34 lucidi)
Linguaggi diinterrogazione
Class ificazione
a linguaggi formali
SQL: Structured Query Langu age QBE: Query By Example
Algebra relazionale Calcolo relazionale Programmazione log ica
b lingu aggi programmativi
Algebra relazionale
• definita da Codd (70)
• molto u tile per imparare a formulare query
• insieme minimo d i 5 operazioni che danno l'intero po tere espress ivo del lingu aggio
Una visione d'insieme
operazion i
unarie
binarie
selezioneproiezioneunionedifferenzajoin
Esempio :gestione degli esami universitaristudente
MATR
123
415
702
NOME
Carlo
Paola
Anton io
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
esameMATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
corsoCOD-CORSO
1
2
TITOLO
matematica
informatica
DOCENTE
Barozzi
Meo
Selezione
SELECT [NOME='Paola'] STUDENTE
MATR
415
NOME
Paola
CITTA’
Torino
C-DIP
Inf
e' una tabella (priva di nome) con
• schema : lo stesso schema di STUDENTE• istanza : le tup le di STUDENTE che sodd isfano il predicato d i selezione
Sintass i del predicato di selezione
espressione booleana di predicati semplici
operazioni booleane :• AND (P1 AND P2)• OR (P1 OR P2)• NOT (P1)predicati semplici :• TRUE, FALSE• termine
comparatoretermine
comparatore :• =, !=, <, <=, >, >=
termine :• costante, attribu to• espress ione
aritmetica dicostanti e attributi
SELECT [(CITTA'='Torino') OR ((CITTA'='Roma') AND NOT (C-DIP='log'))] STUDENTE
Esempio di selezione
MATR
123
415
702
NOME
Carlo
Paola
Antonio
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
Proiezione
NOME
Carlo
Paola
Antonio
C-DIP
Inf
Inf
Log
PROJECT [NOME,C-DIP] STUDENTE
e' una tabella (priva di nome) con• schema : gli att ributi NOME e C-DIP• istanza : la restrizione delle tup le sug li att ributi NOME e C-DIP
Proiezione e duplicati
• nel modello formale la proiezione elimina i dup licati
C-DIP
Inf
Log
PROJECT [C-DIP] STUDENTE
• nel modello informale (e nei sistemi) la eliminazione dei duplicati va richiesta esplicitamente
Assegnamento
• non fa parte delle operazioni algebriche
INFORMATICI =SELECT [C-DIP='Inf'] STUDENTI
TORINESI =SELECT [CITTA'='Torino '] STUDENTI
• serve per dare un no me al risultato d i una espressione algebrica
Unione
TABELLA1 UNION TABELLA2
con lo stesso gradooppu re (nei sistemi)con do mini ordinatamente dello stesso tipo
si puo ' fare se TABELLA1 e TABELLA2sono compatibili
Unione
MATR
123
415
NOME
Carlo
Paola
CITTA’
Bologn a
Torino
C-DIP
Inf
Inf
INFORMATICI UNION TORINESI
e' una tabella (priva di nome) con• schema : lo schema di INFORMATICI• istanza : la un ione delle tuple di INFORMATICI e TORINESI
Differenza
TABELLA1 MINUS TABELLA2
si puo ' fare se TABELLA1 e TABELLA2sono compatibili
Differenza
e' una tabella (priva di nome) con
MATR
123
NOME
Carlo
CITTA’
Bologn a
C-DIP
Inf
attenzione:non e'commutativa
INFORMATICI MINUS TORINESI
• schema : lo schema di INFORMATICI
• istanza : la differenza delle tup le di INFORMATICI e TORINESI
JoinSTUDENTE JOIN [MATR=MATR] ESAME
STUDENTE.MATR
123
123
702
NOME
Carlo
Carlo
Anton io
CITTA’
Bologn a
Bologn a
Roma
C-DIP
Inf
Inf
Log
ESAME.MATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
e' una tabella (priva di nome) con• schema : la concatenazione degli schemi di STUDENTE e ESAME
• istanza: le tuple ottenute concatenando qu elle tuple di STUDENTE e di ESAME che soddisfano il predicato
Sintass i del predicato di join
espressione congiuntiva di predicatisemplici: ATTR1 comp ATTR2
ove ATTR1 appartiene a TAB1 ATTR2 appartiene a TAB2 comp: =, !=, <, <=, >, >=
att ributi omonimi sono resi non ambigu iusando la notazione “ pun tata” : ESAME.MATR, STUDENTE.MATR
Equi-join e Join naturale
EQUI-JOIN :soli confronti di ugu aglianza
MATR
123
123
702
NOME
Carlo
Carlo
Anton io
CITTA’
Bologn a
Bologn a
Roma
C-DIP
Inf
Inf
Log
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
JOIN NATURALE :equi-join di tutt i gli att ributi omonimi
STUDENTE JOIN ESAME
Join naturale di tre tabelle
STUDENTE JOIN ESAME JOIN CORSO
MATR
123
123
702
NOME
Carlo
Carlo
Anton io
CITTA’
Bologn a
Bologn a
Roma
C-DIP
Inf
Inf
Log
COD-CORSO
1
2
3
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
DOCENTE
barozzi
meo
meo
TITOLO
matem
infor
infor
Espressioni algebriche
• Esprimono interrogazion i in modo formale
• Concatenazione di piu' operazioni algebriche
• Consentono di estrarre informazion i dai dati
Selezione e proiezione
NOME
Carlo
Paola
• quali studenti sono iscritti al diploma di informatica?
MATR
123
415
702
NOME
Carlo
Paola
Antonio
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
PROJECT [NOME] SELECT [C-DIP='Inf'] STUDENTE
Selezione e proiezioneMATR
123
415
702
NOME
Carlo
Paola
Antonio
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
• quali studenti di Logistica non sono di Milano?
PROJECT [NOME] SELECT [C-DIP='Log' AND CITTA’ != 'Milano '] STUDENTE
NOME
Antonio
Esempio :gestione degli esami universitaristudente
MATR
123
415
702
NOME
Carlo
Paola
Anton io
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
esameMATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
corsoCOD-CORSO
1
2
TITOLO
matematica
informatica
DOCENTE
Barozzi
Meo
Selezione, proiezione e join
• quali studenti hanno preso 30 in matematica?
MATR
123
123
702
NOME
Carlo
Carlo
Anton io
CITTA’
Bologn a
Bologn a
Roma
C-DIP
Inf
Inf
Log
COD-CORSO
1
2
3
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
DOCENTE
barozzi
meo
meo
TITOLO
matem
infor
infor
Selezione, proiezione e join
• quali studenti hanno preso 30 in matematica?
NOME
Carlo
PROJECT [NOME] SELECT [VOTO=30 AND TITOLO='matematica'] (STUDENTE JOIN ESAME JOIN CORSO)
Equivalenza di espress ioni• quali studenti hanno preso 30 in matematica?
PROJECT [NOME] ( STUDENTE JOIN (SELECT [VOTO=30] ESAME) JOIN (SELECT [TITOLO='matematica'] CORSO))
PROJECT [NOME] SELECT [VOTO=30 AND TITOLO='matematica'](STUDENTE JOIN ESAME JOIN CORSO)
Selezione, proiezione e join
PROJECT [DOCENTE] SELECT [NOME = 'Anton io'] (STUDENTE JOIN ESAME JOIN CORSO)
DOCENTE
Meo
• quali professori hanno esaminato Anton io?
Equivalenza di espress ioni
PROJECT [DOCENTE] SELECT [NOME = 'Anton io'] (STUDENTE JOIN ESAME JOIN CORSO)
PROJECT [DOCENTE] (CORSO JOIN (ESAME JOIN SELECT [NOME = 'Anton io'] STUDENTE))
Espressioni con unione e differenza
( PROJECT [MATR] SELECT [CITTA'='Roma'] STUDENTE)UNION( PROJECT [MATR] (STUDENTE JOIN SELECT [DATA=8-1-98] ESAME))
MATR
702
MATR
123UNION
MATR
702
123
• estrarre la matricola degli studentiromani oppure degli studenti che hannosostenuto un esame il giorno 8-1-98
Espressioni con unione e differenza
(PROJECT [MATR] SELECT [VOTO>=28] ESAME) MINUS (PROJECT [MATR] SELECT [VOTO<25] ESAME)
MATR
702
MATR
123MINUS MATR
123
• estrarre la matricola degli studenti chehanno preso almeno un voto superiorea 28 e non sono mai sces i sotto il 25
Esercizi
• Riprendere le basi di dati per la gestione del personale e degli ordini e esprimere in forma algebrica le interrogazion i : - in quali tipi di progetti lavora Giovanni? - chi e' il manager di Piero? - quali ordini ha emesso Paolo? - quali prodotti sono ordinati da un cliente di Milano? - quali prodotti hanno prezzo inferiore a L. 5000 e non sono presenti in nessun ordine?
Esempio : gestione personale
impiegato
MATR
1
2
3
NOME
Piero
Giorgio
Giovanni
DATA-ASS
1-1-95
1-1-97
1-7-96
SALARIO
3 M
2,5 M
2 M
assegnamentoMATR
1
1
2
3
NUM-PROG
3
4
3
4
PERC
50
50
100
100
progettoTITOLO
Idea
Wide
TIPO
Esprit
Esprit
MATR-MGR
2
null
2
NUM-PROG
3
4
Esempio : gestione ordinicliente
COD-CLI INDIRIZZO P-IVA
COD-ORD COD-CLI DATA IMPORTO
COD-ORD COD-PROD QTA
COD-PROD NOME PREZZO
prodo tto
dettaglio
ordine
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 4
(29 lucidi)
Dichiarazionedegli schemi
in SQL
Storia di SQL
• Definito nell 'ambito del progetto SYSTEM R (IBM S. JOSE) nel 1976
• Nome originario: SEQUEL
• Adottato progress ivamente da tutti i sistemi commerciali
• Standardizzato da ANSI e ISO
Composizione di SQL
• Data Definition Langu age (DDL) definizione di: domini, tabelle, ind ici autorizzazioni, viste, vincoli, procedure, trigger
• Data Manipu lation Language (DML) lingu aggio di query, linguaggio d i modifica, comandi transazionali
Standardizzazione di SQL
• Progress ione dello standard per estensioni quasi-compatibili
• In SQL-2: - entry SQL (piu' o meno equivalente a SQL-89) - intermediate SQL - full SQL
- prima versione nel 1986 (SQL-1) - modifica alla prima versione nel 1989 (SQL-89) - seconda versione nel 1992 (SQL-2, SQL-92) - terza versione attesa per il 1998 (SQL-3)
Potere espress ivo di standard e sistemi commerciali
SQL-2
SQL-1
SQL-89
SQL-3
un tipicosistema
commerciale
Domini elementari in SQL-2
a stringh e
CHAR (N)
VARCHAR (N)
BIT (N)
VARBIT (N)
b numerici esatt i
NUMERIC (N)
DECIMAL (N)
INTEGER
SMALLINT
Altri domini elementari in SQL-2
c numerici appross imati
FLOAT(N) N=2, 0.172E04 = 1700
REAL
DOUBLE PRECISION
b domini speciali
DATE YYYYMMDD
TIME(N) HHMMSS.NNNN
TIMESTAMP
INTERVAL
Il valore "null "
null e' un valore po limorfico(che appartiene a tutti i domini)col significato d i valore non no to
Il valore "null "
il valore esiste in realta'ma e' igno to al database(es.: data di nascita)
il valore e' inapp licabile(es.: numero patente per minorenni)
Vincoli di integrita' di dominioNOT NULL esclude il valore nu lloPRIMARY KEY chiave primaria (implica NOT NULL)
UNIQUE chiave secondaria (non implica NOT NULL)
CHECK predicato che deve ess ere sodd isfatto (POI)
CREATE DOMAIN PrezzoQuotidianiAS INTEGER DEFAULT 1500 NOT NULL
Definizione dei domini applicativi
CREATE DOMAIN OreLezioneAS SMALLINT DEFAULT 40
Definizione delle tabelle
CREATE TABLE STUDENTE ( MATR CHAR(6) PRIMARY KEY
NOME VARCHAR (30) NOT NULL
CITTA' VARCHAR (20)
C-DIP CHAR (3) )
Definizione delle tabelle (2)
CREATE TABLE ESAME ( MATR CHAR(6) COD-CORSO CHAR(6) DATA DATE NOT NULL VOTO SMALLINT NOT NULL PRIMARY KEY(MATR,COD-CORSO) )
CREATE TABLE CORSO ( COD-CORSO CHAR(6) PRIMARY KEY TITOLO VARCHAR(30) NOT NULL DOCENTE VARCHAR(20) )
Integrita' referenziale
• Esprime un legame gerarchico (padre- figlio) fra tabelle
• Alcuni attributi della tabella figlio sono d efiniti FOREIGN KEY
• I valori contenuti nella FOREIGN KEY devono essere sempre presenti nella tabella padre
Esempio: studente - esame
MATR
123
415
702
MATR
123
123
702
studente
esame
Il problema degli orfani
MATR
123
415
702
MATR
123
123
702
studente
esame
orfani:tuple che restano prive dipadre a causa di cancellazionie modifiche della tabella padre
Gestione degli orfani:cancellazione
Cosa succede degli esami se si cancellanogli studenti?
a CASCADE (si cancellano anche gli esami) b SET NULL c SET DEFAULT d NO ACTION
Gestione degli orfani:modifica
Cose succede degli esami se si modifica lamatricola nella tabella STUDENTE?
a CASCADE (si modifica la FOREIGN KEY anche nei corr ispondenti esami) b SET NULL c SET DEFAULT d NO ACTION
Definizione : nella tabella figlio
CREATE TABLE ESAME ( .... .... FOREIGN KEY MATR REFERENCES STUDENTI ON DELETE CASCADE ON UPDATE CASCADE )
E' lecito essere figli di piu' padriCREATE TABLE ESAME ( .... PRIMARY KEY(MATR,COD-CORSO)
FOREIGN KEY MATR REFERENCES STUDENTI ON DELETE CASCADE ON UPDATE CASCADEFOREIGN KEY COD-CORSO REFERENCES CORSO ON DELETE NO ACTION ON UPDATE NO ACTION )
Una istanza scorretta
MATR
123
415
702
NOME CITTA’ C-DIP
MATR
123
123
123
702
702
714
COD-CORSO
1
2
2
2
1
1
DATA
7-9-97
8-1-98
1-8-97
7-9-97
NULL
7-9-97
VOTO
30
28
28
20
NULL
28
esame
viola la chiave
viola il NULLviola la integrita' referenziale
Una istanza corretta
MATR
123
415
702
NOME CITTA’ C-DIP
esameMATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
Esempio : gestione ordinicliente
COD-CLI INDIRIZZO P-IVA
COD-ORD COD-CLI DATA IMPORTO
COD-ORD COD-PROD QTA
COD-PROD NOME PREZZO
prodo tto
dettaglio
ordine
Definizione della tabella CLIENTE
CREATE TABLE CLIENTE ( COD-CLI CHAR(6) PRIMARY KEY INDIRIZZO CHAR(50) P-IVA CHAR(12) UNIQUE )
Definizione della tabella ORDINE CREATE TABLE ORDINE ( COD-ORD CHAR(6) PRIMARY KEY COD-CLI CHAR(6) NOT NULL DEFAULT='999999' DATA DATE IMPORTO INTEGER
FOREIGN KEY COD-CLI REFERENCES ORDINE ON DELETE SET DEFAULT ON UPDATE SET DEFAULT)
Definizione della tabella DETTAGLIO CREATE TABLE DETTAGLIO ( COD-ORD CHAR(6) COD-PROD CHAR(6) QTA SMALLINT PRIMARY KEY(COD-ORD,COD-PROD) FOREIGN KEY COD-ORD REFERENCES ORDINE ON DELETE CASCADE ON UPDATE CASCADE FOREIGN KEY COD-PROD REFERENCES PRODOTTO ON DELETE NO ACTION ON UPDATE NO ACTION)
Definizione della tabella PRODOTTO
CREATE TABLE PRODOTTO ( COD-PROD CHAR(6) PRIMARY KEY NOME CHAR(20) PREZZO SMALLINT )
Esercizio
Riprendere le basi di dati per la gestione del personale (seconda lezione) ed esprimere in SQL la dichiarazione dello schema.
Esempio : gestione personale
impiegato
MATR
1
2
3
NOME
Piero
Giorgio
Giovanni
DATA-ASS
1-1-95
1-1-97
1-7-96
SALARIO
3 M
2,5 M
2 M
assegnamentoMATR
1
1
2
3
NUM-PROG
3
4
3
4
PERC
50
50
100
100
progettoTITOLO
Idea
Wide
TIPO
Esprit
Esprit
MATR-MGR
2
null
2
NUM-PROG
3
4
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 5
(31 lucidi)
Interrogazioniin SQL
Dichiarativita' di SQL
• In SQL l'utente specifica QUALEinformazione e' di suo interesse manon COME estrarla dai dati
• il sistema costruisce una strategia diaccesso (QUERY OPTIMIZATION)
• e’ l'aspetto piu' quali ficante delle basidi dati relazionali
Struttura di SQL
• Basata sulla composizione di blocchi (SELECT FROM WHERE)
• Ogni blocco ha il potere espress ivo di una qualunqu e combinazione di selezion i, proiezion i e join
Esempio :gestione degli esami universitaristudente
MATR
123
415
702
NOME
Carlo
Paola
Anton io
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
esameMATR
123
123
702
COD-CORSO
1
2
2
DATA
7-9-97
8-1-98
7-9-97
VOTO
30
28
20
corsoCOD-CORSO
1
2
TITOLO
matematica
informatica
DOCENTE
Barozzi
Meo
MATR
123
415
702
NOME
Carlo
Paola
Antonio
CITTA’
Bologn a
Torino
Roma
C-DIP
Inf
Inf
Log
Interrogazione semplice
SELECT * FROM STUDENTE
Interrogazione semplice
SELECT NOME FROM STUDENTE WHERE C-DIP = 'Log'
MATR NOME CITTA’ C-DIP
INTERPRETAZIONE ALGEBRICA (a meno dei duplicati) PROJECT [NOME] SELECT [C-DIP='Log '] STUDENTE
STUDENTE
Sintass i nella clausola SELECT
SELECT *SELECT NOME, CITTA'SELECT DISTINCT CITTA'SELECT CITTA' AS LUOGO-DI-RESIDENZASELECT REDDITO-CATASTALE * 0.05 AS TASSA-ICISELECT SUM(SALARIO)
Sintass i della clausola FROM
FROM STUDENTEFROM STUDENTE AS XFROM STUDENTE, ESAMEFROM STUDENTE JOIN ESAME ON STUDENTE.MATR=ESAME.MATR
Sintass i della clausola WHERE
• Espress ione Booleana di predicatisemplici (come in algebra)
• Alcuni predicati aggiuntivi:
– LIKE:C-DIP LIKE 'log%'
TARGA LIKE 'MI_777_8%'
– BETWEEN: DATA BETWEEN 1-1-90 AND 31-12-99
Duplicati
SELECTDISTINCT C-DIPFROM STUDENTE
SELECT C-DIPFROM STUDENTE
C-DIP
Inf
Log
C-DIP
Inf
Inf
Log
Interrogazioni e valori nulli
SELECT *FROM STUDENTEWHERE CITTA' IS [NOT] NULL
attenzione :se CITTA' ha valore NULL(CITTA' = 'Milano ') ha valore 'UNKNOWN'
Predicati e valori nulli
• P = (CITTA' IS NOT NULL) AND (C-DIP LIKE 'Inf%')
• log ica a tre valori (V,F,U)
V AND U = U V OR U = V
F AND U = F F OR U = U
NOT U = U
CITTA’
Milano
Milano
NULL
Milano
C-DIP
Inf
NULL
Inf
Log
P
V
U
F
F
TUPLA SELEZ
si
no
no
no
SELECT NOMEFROM STUDENTE, ESAME
Interrogazione semplicecon due tabelle
WHERE STUDENTE.MATR = ESAME.MATR AND C-DIP LIKE 'Lo%’ AND VOTO = 30
NOME
Carlo
Estrarre il nome degli studenti di “ Logistica”che hanno p reso almeno un 30.
Interpretazione algebrica(a meno di dup licati e includendo n ell 'algebra
il match parziale)
PROJECT [NOME]SELECT [(C-DIP LIKE 'Lo%') AND (VOTO=30)] (STUDENTE JOIN ESAME)
SELECT NOMEFROM STUDENTE, ESAMEWHERE STUDENTE.MATR = ESAME.MATR
AND C-DIP LIKE 'Lo%’ AND VOTO = 30
Join di due tabelle(variante sintatt ica)
SELECT NOMEFROM STUDENTE JOIN ESAME ON STUDENTE.MATR = ESAME.MATRWHERE C-DIP LIKE 'Lo%' AND VOTO > 30
SELECT NOMEFROM STUDENTE, ESAMEWHERE STUDENTE.MATR = ESAME.MATR
AND C-DIP LIKE 'Lo%’ AND VOTO = 30
SELECT NOMEFROM STUDENTE, ESAME, CORSOWHERE STUDENTE.MATR = ESAME.MATR AND CORSO.COD-CORSO = ESAME.COD-CORSO AND TITOLO LIKE 'mat%' AND VOTO = 30
Interrogazione semplicecon tre tabelle
PROJECT [NOME]SELECT [(TITOLO LIKE 'mat%') AND (VOTO=30)] (STUDENTE JOIN ESAME JOIN CORSO)
Estrarre il nome degli studenti di “ Matematica”che hanno preso almeno un 30.
Interrogazione semplice convariabili relazionali
impiegato
MATR
1
2
3
NOME
Piero
Giorgio
Giovanni
DATA-ASS
1-1-95
1-1-97
1-7-96
SALARIO
3 M
2,5 M
2 M
MATR-MGR
2
null
2
CHI SONO I DIPENDENTI DI GIORGIO?
Chi sono i dipendenti di Giorgio?
SELECT X.NOMEFROM IMPIEGATO AS X, IMPIEGATO AS YWHERE X.MATR-MGR = Y.MATR AND Y.NOME = “ Giorgio”
X.MATR-MGR
2
2
X.NOME
Piero
Giovanni
Y.NOME
Giorgio
Giorgio
Y.MATR
2
2
Blocchi SQL per la modifica
tre operazion i elementari
• inserzione• cancellazione• modifica
Inserzione
INSERT INTO STUDENTE VALUES ('456878', 'Giorgio Rossi', 'Bologn a', 'Logistica e Produzione')
INSERT INTO BOLOGNESI (SELECT * FROM STUDENTE WHERE CITTA' = 'Bologna')
Cancellazione
DELETE FROM STUDENTEWHERE MATR = '678678'
Modifica
UPDATE ESAMESET VOTO = 30WHERE DATA = 1-4-97
UPDATE ESAMESET VOTO = VOTO + 1WHERE MATR = '787989'
Esercizi
• Riprendere le basi di dati per la gestione del personale e esprimere in SQL le interrogazion i seguenti: - in quali tipi di progett i lavora Giovanni? - chi e' il manager di Piero? - in quali progett i lavora Piero? - quali i mpiegati lavorano nel progetto “ IDEA” ? - quali i mpiegati lavorano al 100% del loro tempo nel progetto “ WIDE” ?
Esercizi
• Riprendere le basi di dati per la gestione del personale e esprimere in SQL le modifiche seguenti: - inserire la tupla <4,Luca,1-1-97,2M,1> - modificare il salario d i Piero assegnandolo
a 4M - aumentare il salario d i Giorgio del 5% - cancellare i dati di Giovanni
Esempio : gestione personale
impiegato
MATR
1
2
3
NOME
Piero
Giorgio
Giovanni
DATA-ASS
1-1-95
1-1-97
1-7-96
SALARIO
3 M
2,5 M
2 M
assegnamentoMATR
1
1
2
3
NUM-PROG
3
4
3
4
PERC
50
50
100
100
progettoTITOLO
Idea
Wide
TIPO
Esprit
Esprit
MATR-MGR
2
null
2
NUM-PROG
3
4
Esercizio 1• in quali tipi di progetti lavora Giovanni?
TIPO
Esprit
PROJECT [TIPO] SELECT [NOME=’Giovanni'] (IMPIEGATO JOIN ASSEGNAMENTO JOIN PROGETTO)
Esercizio 1• in quali tipi di progetti lavora Giovanni?
SELECT TIPO FROM IMPIEGATO AS I, ASSEGNAMENTO AS A, PROGETTO AS P WHERE I.MATR=A.MATR
AND A.NUM-PROG=P.NUM-PROGAND NOME='Giovanni'
Esercizio 2• chi e' il manager di Piero?
SELECT Y.NOME FROM IMPIEGATO AS X, IMPIEGATO AS Y WHERE X.MATR-MGR=Y.MATR
AND X.NOME='Piero'
Esercizio 3• modificare il salario di Piero assegnandolo a 4M
UPDATE IMPIEGATO SET SALARIO = 4M WHERE NOME='Piero'
Esercizio 4• aumentare il salario d i Giorgio del 5%
UPDATE IMPIEGATO SET SALARIO = SALARIO * 1.05 WHERE NOME='Giorgio'
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 6
(39 lucidi)
Interrogazionicomplesse
Class ificazione delleinterrogazioni complesse
• Query con ordinamento• Query con aggregazioni• Query con raggrupp amento• Query binarie• Query nidificate
Esempio : gestione ordinicliente
COD-CLI INDIRIZZO P-IVA
COD-ORD COD-CLI DATA IMPORTO
COD-ORD COD-PROD QTA
COD-PROD NOME PREZZO
prodo tto
dettaglio
ordine
Istanza di ordine
ordine
COD-ORD
1
2
3
4
5
6
COD-CLI
3
4
3
1
1
3
DATA
1-6-97
3-8-97
1-9-97
1-7-97
1-8-97
3-9-97
IMPORTO
50.000.000
8.000.000
5.500.000
12.000.000
1.500.000
27.000.000
Query con ordinamentoSELECT *FROM ORDINEWHERE IMPORTO > 100.000ORDER BY DATACOD-ORD
1
4
5
2
3
6
COD-CLI
3
1
1
4
3
3
DATA
1-6-97
1-7-97
1-8-97
3-8-97
1-9-97
3-9-97
IMPORTO
50.000.000
12.000.000
1.500.000
8.000.000
1.500.000
5.500.000
Order by COD-CLI
COD-ORD
4
5
1
6
3
2
COD-CLI
1
1
3
3
3
4
DATA
1-7-97
1-8-97
1-6-97
3-9-97
1-9-97
3-8-97
IMPORTO
12.000.000
1.500.000
50.000.000
5.500.000
1.500.000
27.000.000
Order by COD-CLI asc, DATA desc
COD-ORD
5
4
6
3
1
2
COD-CLI
1
1
3
3
3
4
DATA
1-8-97
1-7-97
3-9-97
1-9-97
1-6-97
3-8-97
IMPORTO
1.500.000
12.000.000
5.500.000
1.500.000
50.000.000
27.000.000
Query aggregate
Utili zzano le funzion i aggregate:
SUM sommatoriaAVG mediaMIN minimoMAX massimoCOUNT cardinali ta'
Query con mass imo
SELECT MAX(IMPORTO) AS MAX-IMPFROM ORDINE
MAX-IMP
50.000.000
• Selezionare l’i mporto massimo degliordini.
Query con sommatoria
SELECT SUM(IMPORTO) AS SOMMA-IMPFROM ORDINEWHERE COD-CLIENTE = 1
SOMMA-IMP
13.500.000
• Selezionare la somma degli i mporti degliordini relativi al cliente numero 1.
Query con raggruppamento
si aggiungon o le clausoleGROUP-BY (raggrupp amento)HAVING (selezione dei gruppi)
SELECT …..FROM …..WHERE …..GROUP BY …..HAVING …..
Query con raggruppamento
• Selezionare la somma degli i mporti degliordini successivi al 10-6-97 per quei clientiche hanno emesso almeno 2 ordini.
SELECT COD-CLI, SUM (IMPORTO)FROM ORDINEWHERE DATA > 10-6-97GROUP BY COD-CLIHAVING COUNT (IMPORTO) >= 2
Passo 1: Valutazione WHERE
COD-ORD
2
3
4
5
6
COD-CLI
4
3
1
1
3
DATA
3-8-97
1-9-97
1-7-97
1-8-97
3-9-97
IMPORTO
8.000.000
5.500.000
12.000.000
1.500.000
27.000.000
Passo 2 : Raggruppamento
COD-ORD
4
5
3
6
2
COD-CLI
1
1
3
3
4
DATA
1-7-97
1-8-97
1-9-97
3-9-97
3-8-97
IMPORTO
12.000.000
1.500.000
1.500.000
5.500.000
8.000.000
si valuta la clausola GROUP-BY
Passo 3 : Calcolo degli aggregati
si calcolano SUM (IMPORTO) e COUNT(IMPORTO) per ciascun g ruppo
COD-CLI
1
3
4
SUM (IMPORTO)
13.500.000
32.500.000
5.000.000
COUNT (IMPORTO)
2
2
1
Passo 4 : Estrazione dei gruppi
si valuta il predicatoCOUNT (IMPORTO) >=2
COD-CLI
1
3
4
SUM (IMPORTO)
13.500.000
32.500.000
5.000.000
COUNT (IMPORTO)
2
2
1
Passo 5 : Produzione del risultato
COD-CLI
1
3
SUM (IMPORTO)
13.500.000
32.500.000
Query con raggruppamento eordinamento
• E’ poss ibile ordinare il risultato delle querycon raggruppamento
SELECT …..FROM …..[ WHERE ….. ]GROUP BY …..[ HAVING ….. ]ORDER BY ….
Raggruppamento e ordinamento• Selezionare la somma degli i mporti degli
ordini successivi al 10-6-97 per quei clientiche hanno emesso almeno 2 ordini, inordine decrescente di somma di importo.SELECT COD-CLI, SUM (IMPORTO)FROM ORDINEWHERE DATA > 10-6-97GROUP BY COD-CLIHAVING COUNT (IMPORTO) >= 2ORDER BY SUM(IMPORTO) DESC
Risultato dopo la clausola diordinamento
COD-CLI
3
1
SUM (IMPORTO)
32.500.000
13.500.000
Doppio raggruppamento
SELECT COD-CLI, COD-PROD, SUM(QTA)FROM ORDINE AS O, DETTAGLIO AS DWHERE O.COD-ORD = D.COD-ORDGROUP BY COD-CLI, COD-PRODHAVING SUM(QTA) > 50
• Selezionare la somma delle quantita' deidettagli degli ordini emessi da ciascuncliente per ciascun p rodotto, purche' lasomma superi 50.
Situazione dopo il join e ilraggruppamento
ordine
ORDINE.COD-ORD
3
4
3
5
3
1
2
6
COD-CLI
1
1
1
1
2
3
3
3
DETTAGLIO.COD-ORD
3
4
3
5
3
1
2
6
COD-PROD
1
1
2
2
1
1
1
1
dettaglio
QTA
gruppo 1,1
gruppo 1,2
gruppo 2,1
gruppo 3,1
30
20
30
10
60
40
30
25
Estrazione del risultato
si valuta la funzione aggregataSUM(QTA) e il predicato HAVING
SUM(QTA)
50
40
60
95
COD-PROD
1
2
1
1
COD-CLI
1
1
2
3
Query binarie
Costruite concatenando du e query SQLtramite operatori insiemistici:
UNION unioneINTERSECT intersezioneEXCEPT (MINUS) differenza
(si eliminano i dup licati)
Unione
SELECT COD-ORDFROM ORDINEWHERE IMPORTO > 500.000 UNIONSELECT COD-ORDFROM DETTAGLIOWHERE QTA > 1000
• Selezionare i cod ici degli ordini i cuiimporti superano 500.000 li re oppurepresenti in qu alche dettaglio con quantita'superiore a 1000.
Differenza
SELECT COD-ORDFROM ORDINEWHERE IMPORTO > 500.000 EXCEPTSELECT COD-ORDFROM DETTAGLIOWHERE QTA > 1000
• Selezionare i cod ici degli ordini i cuiimporti superano 500.000 li re ma nonpresenti in nessun d ettaglio con quantita'superiore a 1000.
Intersezione
SELECT COD-ORDFROM ORDINEWHERE IMPORTO > 500.000 INTERSECTSELECT COD-ORDFROM DETTAGLIOWHERE QTA > 1000
• Selezionare i cod ici degli ordini i cuiimporti superano 500.000 li re e che sonopresenti in qu alche dettaglio con quantita'superiore a 1000.
Query nidificate
Costruite concatenando du e query SQLnel predicato where:
[NOT] IN appartenenza[DOES NOT] EXISTS esistenzacomp ANY, ALL quantificatori
comp: =, !=, <, <=, >, >=
Query nidificate
SELECT COD-CLI FROM ORDINE WHERE IMPORTO > 10.000.000
• Selezionare nome e indirizzo dei clienti chehanno emesso qualche ordine di importosuperiore a 10.000.000.
SELECT NOME, INDIRIZZOFROM CLIENTEWHERE COD-CLI IN
Equivalenza fra IN e query semplici
SELECT NOME, INDIRIZZOFROM CLIENTEWHERE COD-CLI IN SELECT COD-CLI FROM ORDINE WHERE IMPORTO > 10.000.000
equivale (a meno d i duplicati) a:SELECT NOME, INDIRIZZOFROM CLIENTE JOIN ORDINE ON CLIENTE.COD-CLI = ORDINE.COD-CLIWHERE IMPORTO > 10.000.000
SELECT COD-ORD FROM DETTAGLIO WHERE COD-PROD IN
• Selezionare nome e indirizzo dei clienti chehanno emesso qualche ordine i cui dettaglicomprendono il prodotto “ Pneumatico” .
SELECT COD-PROD FROM PRODOTTO WHERE NOME = 'Pneumatico'
SELECT COD-CLI FROM ORDINE WHERE COD-ORD IN
SELECT NOME, INDIRIZZOFROM CLIENTEWHERE COD-CLI IN
La query equivalente
equivale (a meno d i duplicati) a:
SELECT NOME, INDIRIZZOFROM CLIENTE AS C, ORDINE AS O, DETTAGLIO AS D, PRODOTTO AS PWHERE C.COD-CLI = O.COD-CLI AND O.COD-ORD = D.COD-ORD AND D.COD-PROD = P.COD-PROD AND IMPORTO > 10.000.000
Uso di IN nelle modifiche• aumentare di L. 5000 l’ importo d i tutti gli ordini che comprendono il prodotto 456
UPDATE ORDINE SET IMPORTO = IMPORTO + 5000 WHERE COD-ORD IN
SELECT COD-ORDFROM DETTAGLIOWHERE COD-PROD = '456'
Query con NOT IN
SELECT COD-CLI FROM ORDINE WHERE IMPORTO > 10.000.000
• Selezionare nome e indirizzo dei clienti chenon hanno emesso nessun ordine diimporto superiore a 10.000.000.
SELECT NOME, INDIRIZZOFROM CLIENTEWHERE COD-CLI NOT IN
La query con ANY e ALL
SELECT COD-ORDFROM ORDINEWHERE IMPORTO > ANY SELECT IMPORTO FROM ORDINE
SELECT COD-ORDFROM ORDINEWHERE IMPORTO >= ALL SELECT IMPORTO FROM ORDINE
COD-ORD
1
2
3
IMPORTO
50.000
300.000
90.000
ANY
F
V
V
ALL
F
V
F
Esercizi
• Riprendere le basi di dati per la gestione del personale e degli ordini ed esprimere in SQL le interrogazion i : - quale impiegati lavorano in un progetto in cui non lavora il loro manager? - quanti ordini ha emesso Paolo? - quante candele sono state ordinate il 5/7/97? - calcolare per ciascun cliente la somma degli i mporti di tutt i gli ordini - estrarre l'ordine di importo piu' alto
Esercizio 1 (lezione precedente)• in quali tipi di progetti lavora Giovanni?
SELECT TIPO FROM IMPIEGATO WHERE MATR IN
SELECT MATR FROM ASSEGNAMENTO
WHERE NUM-PROG INSELECT NUM-PROG
FROM PROGETTOWHERE NOME='Giovanni'
Esercizio 2 (lezione precedente)• chi e' il manager di Piero?
SELECT NOME FROM IMPIEGATO WHERE MATR-MGR IN SELECT MATR
FROM IMPIEGATOWHERE NOME='Piero'
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 7
(32 lucidi)
Aspetti evolutinella definizione
degli schemi
Aspetti evoluti del DDL
• Creazione di indici• Modifica degli schemi• Gestione di viste• Autorizzazioni d'accesso• Vincoli di integrita’ (poi)• Procedure e regole att ive (poi)
Creazione di indiciINDICI:meccanismi di accesso efficiente ai dati(spiegati po i)
CREATE UNIQUE INDEXes.: CREATE UNIQUE INDEX ORD-KEY ON ORDINI (ORD-COD)
CREATE INDEXes.: CREATE INDEX DATA-IX ON ORDINI (DATA)
Comandi di modifica degli schemi
• Necessari per garantire l’evoluzionedella base di dati a fronte di nuoveesigenze
• E’ poss ibile: CREARE NUOVI OGGETTI (CREATE) MODIFICARE OGGETTI PREESISTENTI (ALTER) CANCELLARE OGGETTI (DROP)
Cancellazione degli oggett i
DROP(domini, tabelle, indici, view,
asserzion i, procedure, trigger)
es.: DROP INDEX DATA-IX
OPZIONI RESTRICT e CASCADERESTRICT: impedisce drop se gli oggetti comprendono istanzeCASCADE: applica drop agli oggetti
collegati
es.: DROP TABLE ORDINI
Modifica degli oggett i
ALTER(domini, tabelle)
es.: ALTER TABLE ORDINI ADD COLUMN NUM-FATT CHAR(6)
es.: ALTER TABLE ORDINI ALTER COLUMN IMPORTO ADD DEFAULT 0es.: ALTER TABLE ORDINI DROP COLUMN DATA
Viste relazionali• Offrono la "visione" di tabelle virtuali (schemi esterni)
• Classificate in:
• SEMPLICI (Selezione e proiezione su una sola tabella)• COMPLESSE
Sintass i delle viste relazionali
• Le query possono include al loro interno viste definite in precedenza
• CREATE VIEW <Nome> AS <QUERY>
• CREATE VIEW <Nome> ( <Nome-attributi>) AS <QUERY>
Esempio di vista semplice
ordini
146
313
1-6-961-7-973-9-97
50.000.00012.000.00027.000.000
VISTA :ordini principali
CREATE VIEW ORDINI-PRINCIPALI AS SELECT * FROM ORDINI WHERE IMPORTO > 10.000.000
• Ordini di importo superiore a 10.000.000
Uso della vista per query
Composizione della vista con la query: SELECT NUM-CLI FROM ORDINI WHERE IMPORTO > 10.000.000
Vista: CREATE VIEW ORDINI-PRINCIPALI AS SELECT * FROM ORDINI WHERE IMPORTO > 10.000.000
Query: SELECT NUM-CLI FROM ORDINI-PRINCIPALI
Modifiche tramite le viste
Composizione della vista con la modifica: UPDATE ORDINI SET IMPORTO = IMPORTO * 1.05 WHERE NUM-CLI = 3 AND IMPORTO > 10.000.000
Vista: CREATE VIEW ORDINI-PRINCIPALI AS SELECT * FROM ORDINI WHERE IMPORTO > 10.000.000
Modifica: UPDATE ORDINI-PRINCIPALI SET IMPORTO = IMPORTO * 1.05 WHERE NUM-CLI = 3
Esempio di vista complessa
CREATE VIEW CLI-PRO (CLIENTE,PRODOTTO)AS SELECT COD-CLI, COD-PROD FROM ORDINE JOIN DETTAGLIO ON ORDINE.COD-ORD = DETTAGLIO.COD-ORD
Vista complessa (JOIN)
CLIENTE
12
PRODOTTO
45
COD-CLI
12
COD-ORD
33
COD-ORD
33
COD-PROD
45
….. …..
JOIN
Interrogazionesulla vista complessa
Composizione della vista con la query:SELECT COD-CLIFROM ORDINE JOIN DETTAGLIO ON ORDINE.COD-ORD = DETTAGLIO.COD-ORDWHERE COD-PROD = 45
Query:SELECT CLIENTEFROM CLI-PRODWHERE PRODOTTO = 45
Modifiche sulla vista complessa
• Non e' poss ibile modificare le tabelle di base tramite la vista perche' la interpretazione e' ambigua
• es.: UPDATE CLI-PROD SET PRODOTTO = 43 WHERE CLIENTE = 12
a il cliente ha cambiato l'ordine b il codice del prodotto e' cambiato
Vista complessa (JOIN)
PRODOTTO
45
COD-CLI
12
COD-ORD
33
COD-ORD
33
COD-PROD
45
….. …..
JOIN
CLIENTE
12 42
45
45 42
42
Autorizzazioni d’access o
• PRIVATEZZA: protezione selettiva dellabase di dati in modo da garantire l’accessosolo agli utenti autorizzati.
• Meccanismi per identificare l’utente(tramite PAROLA CHIAVE o PASSWORD):– Quando si collega al sistema informatico– Quando accede al DBMS
• UTENTI ind ividuali e GRUPPI di utenti
Autorizzazioni d’access o
• Si att ribu iscono agli UTENTI deiPRIVILEGI DI ACCESSO alle RISORSE
utenti: identificati tramite password risorse: tabelle, view (e altre)
GRANT <privilegi> ON <risorse> TO <utenti>
Principali privilegi di access o
• SELECT [ATTRIBUTI]• UPDATE [ATTRIBUTI]• INSERT• DELETE• ALL PRIVILEGES
Esempio
GRANT ALL PRIVILEGES ON ORDINE TO User1GRANT UPDATE(IMPORTO) ON ORDINE TO User2GRANT SELECT ON ORDINE TO User2, User3
• Il creatore di una risorsa ha tutti i privilegi
Concess ione dei privilegi
• Spesso l'utente DATABA SE ADMINISTRATORcrea l'intera base di dati
• Chi detiene un privilegio puo' concederlo conGRANT OPTION
GRANT ALL PRIVILEGES ON ORDINE TO User1WITH GRANT OPTION
Esempio di uso, grant option
1 Database administrator GRANT ALL PRIVILEGES ON ORDINE TO User1 WITH GRANT OPTION
2 User1 GRANT SELECT ON ORDINE TO User2 WITH GRANT OPTION
3 User2 GRANT SELECT ON ORDINE TO User3
Revoca dei privilegiREVOKE <privilegi> ON <risorsa> FROM <utente>
Revoca dei privilegi con casc ata
REVOKE <privilegi> ON <risorsa> FROM <utente>CASCADE
es:REVOKE UPDATE ON ORDINE FROM User1REVOKE SELECT ON ORDINE FROM User3
Revoca di un previlegio con casca ta
DBA
User1
User2
Revoca di un privilegio con casca ta
1 Database administrator GRANT SELECT ON ORDINE TO User1 WITH GRANT OPTION2 User1 GRANT SELECT ON ORDINE TO User23 Database administrator REVOKE SELECT ON ORDINE FROM User1 CASCADE
Viste e autorizzazioni di access o
Viste = unita’ di autorizzazione• Consentono la gestione ottimale della
privatezza
Esempio: gestione dei conti correnti
fil iale 1
rete
Banca
fil iale 2 fil iale 3
CONTO-CORRENTE(NUM-CONTO, FILIALE, CLIENTE, COD-FISC, DATA-APERTURA, SALDO)
TRANSAZIONE(NUM-CONTO, DATA, PROGR, CAUSALE, AMMONTARE)
Requisiti di access oconto-corrente
NUM-CONTO
x
y
z
SALDON.FILIALE
1
1
1
…
transazioneNUM-CONTO
x
x
y
...
…
fil iale1
fil iale1
funzionari1
cassieri1
cassieri2
funzionari1
cassieri1
cassieri2,3
all previleges
select
select
update saldo, select
all previleges
sele
ct
Viste relative alla prima fili ale
DEFINE VIEW CONTO1 AS( SELECT * FROM CONTO-CORRENTE WHERE FILIALE = 1)
DEFINE VIEW TRANSAZIONE1 AS( SELECT * FROM TRANSAZIONE WHERE NUM-CONTO IN ( SELECT NUM-CONTO FROM CONTO1 ) )
Autorizzazioni relative ai datidella prima fili ale
GRANT ALL PRIVILEGES ON CONTO1 TO FUNZIONARI1GRANT UPDATE(SALDO) ON CONTO1 TO CASSIERI1GRANT SELECT ON CONTO1 TO CASSIERI1, CASSIERI2, CASSIERI3
GRANT SELECT ON TRANSAZIONE1 TO FUNZIONARI1GRANT ALL PRIVILEGES ON TRANSAZIONE1 TO CASSIERI1GRANT SELECT ON TRANSAZIONE1 TO CASSIERI2, CASSIERI3
Esercizi• Riprendere le basi di dati per la gestione del personale ed esprimere:
- i comandi per modificare la tabella IMPIEGATO aggiung endo il campo COD-FISC- una vista complessa che contiene il nomi degli i mpiegati che lavorano ai
vari progett i - la vista che seleziona gli IMPIEGATI che lavorano al progetto “ Wide” - le istruzioni che consentono all’utente MGR-WIDE il pieno controllo sulla vista
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 8
(28 lucidi)
Vincoli,procedure
e regole attivein SQL
Quali ta' dei dati
• Quali ta' dei dati: correttezza, completezza, attualita'.
• In molte applicazioni reali i dati sono d iscarsa quali ta' (5% - 40% di dati scorretti).
• Per aumentare la quali ta' dei dati:• Regole di integrita'• Manipolazione dei dati tramite
programmi predefiniti (procedure etrigger)
Esempio : gestione magazzino
magazzino
COD-PROD
1
3
4
5
QTA-DISP
150
130
170
500
QTA-RIORD
100
80
50
150
riordino
COD-PROD DATA QTA-ORD
Vincoli di integrita' generici
• Predicati che devono essere veri sevalutati su istanze corrette (legali )
della base di dati
• Espress i in du e modi: - negli schemi delle tabelle
- come asserzioni separate
Vincoli associati alle tabelle
Si utili zza la clausola: CHECK (PREDICATO) associata ai vari att ributi oppure espressa al termine della dichiarazione della tabella
Esempio: definizione di MAGAZZINO
CREATE TABLE MAGAZZINO AS ( COD-PROD CHAR(2) PRIMARY KEY QTA-DISP INTEGER NOT NULL QTA-RIORD INTEGER NOT NULL
)
CHECK(QTA-DISP>10)
CHECK (QTA-RIORD>10) CHECK (QTA-DISP>QTA-RIORD)
Asserzioni
CREATE ASSERTION Ordini-Limitati AS CHECK( 1000 <=
SELECT COUNT(COD-PROD) FROM RIORDINO)
• Predicati espress i separatamente dalladefinizione delle tabelle, che devonoessere veri se valutati su istanze corrette
(legali)
Significato dei vincoli
La verifica dei vincoli puo ' essere:
S1 S2 S fS0 S1
a immediate (immediata): la loro violazione annulla l'ultima modifica
b deferred (differita): la loro violazione annulla l'intera applicazione
V
Modifica dinamica del significato dei vincoli
• Ogni vincolo e' definito d i un tipo (normalmente " immediate" )
• L'app licazione puo ' modificare il tipo iniziale dei vincoli: - set constraints immediate - set constraints deferred• Tutti i vincoli vengono comunq ue verificati, prima o po i.
Procedure
• Moduli di programma che svolgono unaspecifica attivita' di manipolazione dei dati
• Due momenti: - dichiarazione (DDL) - invocazione (DML)
• Con architettura client-server sono: - invocate dai client - memorizzate e eseguite presso i server
• Non standard in SQL-2 ma presenti neiprincipali sistemi relazionali
Esempio : prelievo dal magazzino
magazzino
COD-PROD
1
3
4
5
QTA-DISP
150
130
170
500
QTA-RIORD
100
80
50
150
riordino
COD-PROD DATA QTA-ORD
Specifica• L’utente indica un p relievo dando il
cod ice del prodo tto e la quantita' daprelevare
• Se la quantita' dispon ibile in magazzinonon e' sufficiente la procedura si arrestacon un a eccezione
• Se la quantita' dispon ibile in magazzino e'inferiore alla quantita' di riordino sipredispone un nuo vo ordine d'acquisto.
• Viene eseguito il prelievo, modificando la quantita' disponibile in magazzino
Interfacc ia
COD-PROD
4
QTA-DISP
170
QTA-RIORD
50
PRELIEVO(4,150)
PROCEDURE PRELIEVO ( PROD INTEGER , QUANT INTEGER)
Invocazione
Stato iniziale nella base di dati
Realizzazione della procedura
2. LETTURA DELLO STATO
1. DICHIARAZIONE VARIABILI
3. SE LA QUANTITA' DISPONIBILE E'INSUFFICIENTE: ECCEZIONE
4. AGGIORNAMENTO DELLO STATO
5. SE LA NUOVA QUANTITA' DISPONIBILEE` INFERIORE ALLA QUANTITA' DIRIORDINO: EMISSIONE DI UN ORDINE
ProceduraPROCEDURE PRELIEVO (PROD INTEGER, QUANT INTEGER) ISQ1, Q2 INTEGERX EXCEPTIONBEGIN
END
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 - QUANT WHERE COD-PROD = PROD;
IF Q1 - QUANT < Q2 THEN INSERT INTO RIORDINO VALUES(PROD, SYSDATE, Q2)
Esempio di invocazione
SELECT QTA-DISP, QTA-RIORD INTO Q1, Q2 FROM MAGAZZINO WHERE COD-PROD = PROD;
COD-PROD
4
QTA-DISP
170
QTA-RIORD
50
PRELIEVO(4,150)
Q1 = 170, Q2 = 50
PROD=4, QUANT=150
Invocazione (continua)
IF Q1 < QUANT THEN RAISE(X) non scatta
COD-PROD
4
QTA-DISP
20
QTA-RIORD
50
Q1 - QUANT < Q2 e' vero: INSERT INTO RIORDINO VALUES(PROD, SYSDATE, Q2)
COD-PROD
4
DATA
10-10-97
QTA-RIORD
50
UPDATE MAGAZZINOSET QTA-DISP = QTA-DISP - QUANTWHERE COD-PROD = PROD
Regole att ive (trigger)
• Modu li di programma che svolgonouna specifica att ivita' di manipolazionedei dati
• Simili alle procedure, ma l'invocazionee' automatica
• Seguono il paradigmaEVENTO-CONDIZIONE-AZIONE
• Non standard in SQL-2 ma presenti neiprincipali sistemi relazionali
Paradigma evento -condizione - azione (ECA)
• evento: modifica alla base di dati
• informalmente: - quando accade l'evento - se la condizione e' vera - allora si esegue l'azione
• cond izione: predicato
• azione: modifica alla base di dati, segnalazioni agli utenti
2. CONDIZIONE: LA NUOVA QUANTITA' DISPONIBILE E' INFERIORE ALLA
(NUOVA) QUANTITA' DI RIORDINO:NEW.Q-DISP < NEW.Q-RIORD
1. EVENTO:UPDATE(QDISP) IN MAGAZZINO
3. AZIONE:– SE LA QUANTITA' DISPONIBILE E '
INSUFFICIENTE: ECCEZIONE– EMISSIONE DI UN ORDINE
Esempio: gestione automaticadel riordino
Regola att iva (trigger)
CREATE TRIGGER GESTIONE-RIORDINOAFTER UPDATE OF QTA-DISP ON MAGAZZINOWHEN (NEW.QTA-DISP < NEW.QTA-RIORD)
IF NEW.QTA-DISP < 0 THEN RAISE(X);
FOR EACH ROWX EXCEPTIONBEGIN
END
INSERT INTO RIORDINO VALUES(NEW.COD-PROD, SYSDATE, NEW.QTA-RIORD)
Esecuzione dell 'applicazione
UPDATE MAGAZZINO SET QTA-DISP = QTA-DISP - 150 WHERE COD-PROD = 4
COD-PROD
4a
QTA-DISP
20
QTA-RIORD
50
Esecuzione del triggerevento : UPDATE(QTA-DISP) ON MAGAZZINO
COD-PROD
4
DATA
10-10-97
QTA
50
condizione : VERA
azione : IF NEW.QTA-DISP < 0 THEN RAISE(X) non scatta
INSERT INTO RIORDINO VALUES (NEW.COD-PROD, SYSDATE, NEW.QTA-RIORD)
Problemi di progettoper procedure e trigger
• Decomposizione modulare delle app licazioni
• Paradigma di invocazione: - esplicita (procedure) - implicita (trigger)• Aumento d i: - efficenza - controllo - riuso
Conseguenze dell’ usodi procedure e trigger
• Aumenta la respon sabili ta' dell'amministratore della base di dati (rispetto al programmatore app licativo)
• Si sposta "conoscenza" dalle app licazion i allo schema della base di dati (independenza di conoscenza)
• (per saperne di piu': sito internet www .elet.po limi.it/idea)
Esercizi• Riprendere le basi di dati per la gestione degli ordini ed esprimere:
- un vincolo d i integrita' che impedisce la presenza di piu' di 100 dettagli per ciascun o rdine.
- una procedura che elimina tutt i gli ordini e i relativi dettagli di un particolare cliente
- un trigger che scatta quando viene cancellato un cliente ed elimina tutt i gli ordini e i relativi dettagli di quel cliente
Un breve ripasso
• MODELLO RELAZIONALE• ALGEBRA RELAZIONALE - SELEZIONE, PROIEZIONE, UNIONE, DIFFERENZA, JOIN• SQL - DATA DEFINITION - CREATE DOMAIN, TABLE, INDEX, VIEW, ASSERTION, PROCEDURE, TRIGGER - DROP, ALTER - GRANT, REVOKE• SQL - DATA MANIPULATION - SELECT - INSERT, UPDATE, DELETE
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 9
(35 lucidi)
Tecnologiadei sistemiinformativi
Architettura dei sistemi informatici
MAN
WAN
LAN
uff icio citta’ distribuzionegeografica
Paradigma client-server
• Tecnica per strutturare sistemi software
servizi
richiestidal CLIENT
svolti daiSERVER
• Due tipo logie di sistemi: CLIENT richiedono i servizi SERVER forniscono i servizi
• Viene resa "pubb lica" una " interfaccia di servizi"
Client-servernei sistemi informativi
• Separazione funzionale ideale CLIENT : presentazione dell 'informazione SERVER : gestione dei dati
• SQL : il li nguaggio ideale per separare gli ambienti CLIENT : formula query, elabora risultati SERVER : esegue query RETE : trasferisce i comandi di att ivazione (es: di procedure SQL) e i risultati
Architettura client-serverclass ica
CLIENTcompon e richieste
in SQL
esegue richiestein SQL
SERVER
Architettura con serverapplicativo
CLIENT
compon e richiestein SQL
SERVERAPPLICATIVO
DATABA SESERVER
esegue richiestein SQL
CLIENTCLIENTrichiedeapplicazion i
Parallelismo nei server
• Uso d i macchinemultiprocessore
process ori
dischi
DATABA SE SERVER
con p arallelismo
base di datiparallela
• Elaborazioneidentica su ciascunprocessore
• Obiett ivo :prestazion i
Distribuzione dei dati
• NON SOLO presenza di molteplici basi di dati
DATABA SESERVER 1
DATABA SESERVER 2
CLIENT
applicazione
base di datidistribu ita
• MA ANCHE presenza di app licazioni che
usano dati provenientida piu' fonti
Replicazione dei dati
• Motivazione: maggior disponibil ita', efficienza, differente trattamento dei dati, affidabil ita'
copiaprincipale
cop iasecond aria
cop iasecond aria
base di dati replicata
Separazione funzionali degliambienti
• Ambiente operativo: gestione " in linea" dei dati, finalizzato alla
gestione delle transazion i di modifica
• Ambiente di analisi: gestione " fuori linea" dei dati, finalizzato ad
interrogazioni e analisi statistiche
On Line Transaction Processing (OLTP)
On Line Analytical Processing (OLAP)
Ambiente per l'analisi :data warehouse
• DATA WAREHOUSE: descrizione organizzata di tutt i i dati
necessari per una analisi strategica delcomportamento dell 'impresa
• Tecniche: analisi multidimensionale, data mining
Interazione fra OLTP e OLAP
CLIENTOLTP
CLIENTOLAP
DATABA SESERVER
DATABA SESERVER
DATAWAREHOUSE
Sistemi "LEGACY "
• Sistemi realizzati su architetture basate suMAINFRAME (grande calcolatore centrale)cui si collegano terminali poco sofisticati(spesso con interfaccia a caratteri)
• Normalmente obsoleti, ma spesso preziosi(assicurano la gestione operativa diapp licazion i importanti, ad esempiofinanziarie, fiscali, prenotazion i aeree, etc…)
Sistemi "LEGACY "
terminale 1
terminale 4
terminale 2
terminale 3
terminale 5
DATABA SE
linea telefon icaMODEM MODEM
MAINFRAME
sistema legacy
Molti sistemi LEGACY sonotecnologicamente superati
• Scelta dell 'hardware• Scelta del software (COBOL, DL/1)• Su archivi separati (senza DBMS)
Pero' sono sistemi aff idabil i in operativita'il cui funzionamento continuo e’ind ispensabile
Evoluzione dei sistemi legacy
• DOWNSIZING: - trasformazione verso architetture client-server
• INCAPSULAMENTO: - definizione di funzion i server di alto li vello richiamabil i tramite interfacce standard che mascherano la reale struttura del software
Interoperabili ta'
• Capacita' di interazione fra sistemieterogenei
- diverso sistema operativo - diverso protocollo d i comunicazione
- diverso software di gestione dei dati
Soluzioni per l’i nteroperabili ta'
1 STANDARD (adozione di standard commerciali )
2 GATEWAY (emulazione di un ambiente in un altro)
Tipo log ie di sistemi informatici
1 SISTEMI APERTI (utili zzano standard commerciali tali da
garantire interoperabil ita')
2 SISTEMI PROPRIETARI (con componenti hardware/software offerti
da un solo costruttore)
Vantaggi dei sistemi aperti
2 Uso di prodo tt i offerti da venditori diversi - maggior competizione - soluzion i piu' econo miche - si evita una realizzazione ad-hoc - maggior diffusione fra gli utenti delle soluzion i informatiche dominanti
1 Ind ipendenza dal vend itore
Svantaggi dei sistemi aperti
2 Complessita' degli standard - su do mini non esclusivi - documentati poco e male - realizzati solo in parte
1 Lentezza del processo di standardizzazionee della trasformazione degli standard inprodo tt i
(specie se ufficiali, cioe' ISO o ANSI)
Standard un mond o complicatiss imo e in perenne evoluzione
a Software di costruzione delle app licazion i(ODBC)
b Software di gestione dei dati(SQL)
c Software di gestione delle reti(TCP-IP)
d Software di base (sistema operativo)(UNIX, WINDOWS-NT)
Open Database Connectivity (ODBC)
• Consente l’interazione fra DBMS diversiusando SQL come lingu aggio standard d iinterazione
• Propo sto da Microsoft (1991)
• E’ una interfaccia per programmi app licativi (Application Program Interface, API)
Open Database Connectivity (ODBC)
Interfacc ia ODBC (driver manager)
DriverOracle
DriverDB2
DriverSQL Server
APPLICAZIONE APPLICAZIONE APPLICAZIONE
DataSource
Componenti di ODBC
• APPLICAZIONE: chiama le funzion i di ODBC
• DRIVER: adatta ed elabora le richieste,sottomette query SQL alle basi di dati,restituisce i risultati all’ app licazione.
• DATA SOURCE: integra <database, sistemaoperativo, software di rete>
• DRIVER MANAGER: carica i driver
Open Database Connectivity (ODBC)
Interfacc ia ODBC (driver manager)
DriverDB2
DriverOracle
DriverSQL Server
APPLICAZIONE APPLICAZIONE APPLICAZIONE
<Oracle,Windows/NT,Novell>
Caratteristiche dell’i nterfacc iaODBC
• E’ una LIBRERIA di procedure checonsentono la conn essione al DBMS,l’esecuzione di programmi SQL el’estrazione dei risultati
• Le stringh e SQL po ssono essere parte delcod ice sorgente o costruite a tempo d iesecuzione
• E’ basata sug li standard SQL Access Group(1991) e X/Open
• Sono standardizzati anche i cod ici di errore
Compiti dell’ applicazione
• Richiede una CONNESSIONE (sessione) conuna data source
• Definisce le aree di memoria e i formati peracquisire (leggere) i risultati delle query
• Invia richieste SQL tramite una funzionedell’ interfaccia ODBC
• Richiede i risultati progressivamente (manmano che divengo no d ispon ibili ); senecessario, gestisce le condizion i di errore
• Termina la conn essione
Compiti del driver manager
• E’ un p rodo tto Microsoft
• Verifica la correttezza e la progressionedelle chiamate ricevute dalle applicazioni
• E’ responsabile di inizializzare leconn essioni verso le data source e dicaricare i driver r ichiesti da una app licazione
Compiti dei driver
• E' fornito d irettamente dai costruttoriinteressati (ad esempio, Oracle e/o Novell )
• Opera le necessarie conversione di formatoe di lingu aggio
• Invia le richieste alla propria data source
• Riceve i risultati della propria data source
Configurazioni
• Multiple-tier: - Applicazione, Driver e Driver Manager sul Client - Data Source sul Server
• Sing le-tier: - Driver e Data Source su un unico computer (con funzionalita' ridotte)
• Multiple-tier con gateway: - Gateway: riceve una richiesta e la trasmette ad un a data source
Gateway
• Opera le necessarie conversioni (dilinguaggio e di formato)
• Fornisce le funzionali ta' di server nelsistema di input e quelle di client nelsistema di output
• E' un sistema software in grado d i trasferirerichieste da un contesto (in inpu t) ad unaltro (in output)
Uso dei GATEWAY
• tra sistemi relazionali• verso LEGACY SYSTEM
MAINFRAMESISTEMARELAZIONALE
DATABA SERELAZIONALE
(INPUT)RELAZIONALE
(OUTPUT)LEGACY
DATABA SELEGACY
UTENTERELAZIONALE
gateway
Sommario
• Concett i e prob lemi– Sistema aperti / sistemi proprietari– Interoperabilita'
• Standard– ODBC
• Elementi architetturali– Architettura Client-Server– Database Distribuito, Parallelo, Replicato– OLAP e Data Warehouse– Sistemi legacy– Gateway
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 10
(32 lucidi)
Sistemitransazionali e
controllodi concorrenza
Esempio di sistema informativo
GESTIONEIMPIANTI
ELENCHIABB ONATI
IMMISSIONE DIORDINI DISERVIZIO
GESTIONERETE
AMMINISTRAZIONE
GESTIONEELENCHIABB ONATI
CLIENTI
BOLLETTECOMMUTAZIONE
RISORSE EMANUTENZIONE
Esempio di transazione
ELENCHIABB ONATI
GESTIONEIMPIANTI
IMMISSIONE DIORDINI DISERVIZIO
GESTIONERETE
AMMINISTRAZIONE
GESTIONEELENCHIABB ONATI
CLIENTI
BOLLETTECOMMUTAZIONE
RISORSE EMANUTENZIONE
1
3
2
6
5
8
7
11
10
9
4
Il concetto di transazione
Una un ita' di elaborazione che god e di4 proprieta' (ACIDE)
• Atomicita'• Consistenza• Isolamento• Durata (persistenza)
Transazione "ben formata"
BEGIN TRANSACTIONcodice con manipolazione dei dati(letture e scritture)COMMIT WORK - ROLLBACK WORKcodice privo di manipolazione di datiEND TRANSACTION
S0 S1W1
S2W2
S3W3
SrW4
Atomicita'
Comportamenti poss ibili :
S1 S3 SrS0 S2
UNDO UNDO UNDO REDO
La transazione e' una trasformazione atomicadallo stato iniziale a quello finale.
b rollback work o errore prima del commit : undo
a commit work : successo
c guasto dopo il commit : redo
Consistenza
La transazione rispetta i vincoli di integrita'
Come conseguenza:se lo stato iniziale e' correttoanche lo stato finale e' corretto
Isolamento
La transazione non risente degli effettidelle altre transazioni concorrenti
Come conseguenza:non espon e i suo i stati intermediSi evita l' "effetto domino"
Persistenza
Gli effett i di un commit workdureranno "per sempre"
(ind ipendentemente dai guasti del sistema)
Per garantire le proprieta' acide
• Controllo d i affidabili ta' : atomicita', persistenza
• Controllo d i concorrenza : isolamento
• Controllo d i esecuzione : consistenza
Controllodi concorrenza
I vantaggi della concorrenza
T1
T2
T3
T4
T5t
B C E
B C E
B C E
B C E
B C E
Problemi dovuti alla concorrenza
T1 : UPDATE CC SET SALDO = SALDO + 3 WHERE CLIENTE = Stefano Ceri
T2 : UPDATE CC SET SALDO = SALDO + 6 WHERE CLIENTE = Stefano Ceri
memoriacentrale
Meccanismo di input/output inassenza di controllo di concorrenza
pagina x’
pagina x x
x
memoriadi massa
Esecuzione con perdita di update
S(SC)=100
1 R(T1): S(SC) V12 V1 = V1 + 33 R(T2): S(SC) V24 V2 = V2 + 65 W(T1): V1 S(SC) S(SC)=1036 W(T2): V2 S(SC) S(SC)=106
Sequenza di azioni di i/o che produce l'errore
R(T1) R(T2) W(T1) W(T2)
R(T1) R(T2) W(T2) W(T1)
oppure
Altro prob lema: lettura "sporca"
S(SC)=100
1 R(T1): S(SC) V12 V1 = V1 + 33 W(T1): V1 S(SC) S(SC)=1034 R(T2): S(SC) V25 ROLLBACK(T1)6 V2 = V2 + 67 W(T2): V2 S(SC) S(SC)=109
Causa delle anomalie
Entrambe le anomalie non si sarebberoverificate con una esecuzionesequenziale (seriale) delle transazion i
pero' imporre una esecuzionesequenziale e' ecces sivo!
Criterio di correttezza
Si deve garantire che una esecuzioneconcorrente sia equ ivalente ad unaesecuzione sequenziale (seriale):
SERIALIZZABILITA'
Teoria del controllo di concorrenza
• Teoria molto ricca di risultati, con un atecnolog ia prevalente (usata su tutti iDBMS):
LOCKING A DUE FASI
Primitive di lock
PRIMITIVE:r-lock: lock in letturaw-lock: lock in scritturaunlock
STATO DI UN OGGETTO:liberor-locked (bloccato da un lettore)w-locked (bloccato da uno scrittore)
Transazioni ben formate
• Ogni READ di un og getto preceduto da r-lock seguito da un lock
• Ogni WRITE di un ogg etto preceduto da w-lock seguito da un lock
Tabella dei confli tt i
SI : blocco della risorsa,il programma procedeNO : il programmava in attesa chela risorsa venga sbloccata
libera r-locked w-locked
SI OK NO
SI NO NO
r-lock
w-lock
OK: contatore dei lettorir-lockr-coun ter = r-counter + 1unlockr-coun ter = r-counter - 1
Lock ing a due fasi
Una azione di unlocknon puo ' precedere una azione di lock
numerodi risorsebloccate
da T
t
i
fasecrescente
fasecalante
Assunzioni
a Transazion i ben formateb Poli tica dei conflitti (come da tabella)c Locking a due fasi
Implicano la SERIALIZZABILITA'
Realizzazione del lock ing
locka li vello d i:filepagina fisicatup lavalore di un
att ributo d iuna tup la
file
pagina
tup la
valore
Granularita'ridotta
maggioreconcorrenza
Problema: deadlock
T1 :W-LOCK(D1)W-LOCK(D2)lettura e scritturadi D1 e D2UNLOCK(D1)UNLOCK(D2)
T2 :W-LOCK(D2)W-LOCK(D1)lettura e scritturadi D1 e D2UNLOCK(D2)UNLOCK(D1)
Insorgenza del deadlock
T1 esegue W-LOCK(D1)T2 esegue W-LOCK(D2)
T1 attende una risorsa controllata da T2T2 attende una risorsa controllata da T1
T1 T2
Tecniche risolutive del deadlock
• Time-out: un 'attesa eccessiva e' interpretata come deadlock• Prevenzione: evitare alcune condizion i di attesa• Determinazione: ricerca dei cicli sul grafo di attesa
TECNICA PIU' USATA : TIME-OUT
Lock ing nei sistemi commerciali
E' poss ibile ridurre i controlli i n lettura:
• Committed read: si evitano letture sporche• Cursor stabili ty: stabili ta' dei programmi che usano il database• Repeatable read: a due fasi
Sommario
• Concett i e prob lemi– Proprieta' acide delle transazioni– Inconsistenze di transazioni concorrenti
– Serializzabili ta'– Deadlock e loro gestione
• Tecniche– Gestione dei lock– Gestione dei deadlock
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 11
(34 lucidi)
Controllo diaffidabili ta'
Argomenti
• Persistenza della memoria e back-up• Gestione del buffer• Gestione aff idabile delle transazion i• Gestione del giornale• Ripristino dop o i guasti (recovery)
Persistenza delle memorie
• Memoria centrale :non e' persistente
• Memoria di massa :e' persistente ma puo ' danneggiarsi
• Memoria stabile :memoria che non puo ' danneggiarsi
(e' una astrazione)
Come garantire la memoria stabile
replicazione on-line: mirroring di due dischi
DISK DRIVE 2
DISK 1 DISK 2
BUS 1
BUS 2
CPU 1
CPU 2
UNITA’MULTIPROCESSORE
DISK DRIVE 1
Come garantire la memoria stabile
replicazione off-line : un ita' nastro (backup)
DATABA SESERVER
DATABA SE
BACKUP
DUMP
Gestione della memoria centrale
Razionale:• Riuso dei dati nel buffer• Scrittura differita della base di dati
disco buffer di memoria centrale
i/o
pagina x
pagina y
memoriacentrale
buffer poo l
Uso della memoria centrale
y
x
Gestione del bufferSi basa sull’uso d i quatt ro primitive:
FIX allocazione di una nuo va pagina nel buffer a una transazioneUSE utili zzo d i una pagina presente nel bufferUNFIX de-allocazione di una paginaFORCE scrittura in modo sincrono delle pagine dalla memoria centrale alla base di dati
Uso del buffer (transazioni)Avviene secondo lo schema: FIX repeat USE until (fine della transazione) UNFIX
Le pagine vengono scritte dal buffer in modo asincrono:
FLUSH primitiva controllata dal gestore del buffer, scrive in modo asincrono la pagina dalla memoria centrale alla base di dati
Esecuzione di una primitiva FIXRICERCA DELLA PAGINA TARGET• Si cerca una pagina libera• Altrimenti si cerca una pagina de-allocata, che se necessario e’ cop iata sul disco• Altrimenti (se po litica STEAL) si sott rae una pagina ad una transazione attiva, che viene copiata sul disco• Altrimenti (se po litica NO STEAL) la ricerca falli sceLETTURA• Se esiste una pagina target, viene letta dal database al buffer di memoria centrale
Poli tiche di gestione del buffer
a STEAL (pagine sottratte a una transazione att iva) NO STEAL
normalmente :NO-STEAL, NO-FORCE
b FORCE (pagine scritte al commit-work) NO FORCE
Poli tiche di gestione del buffer
a PRE-FETCHING (anticipa la lettura delle pagine, utile specie nelle letture sequenziali )
b PRE-FLUSHING (anticipa la scrittura delle pagine de-allocate, utile per accelerare il FIX delle pagine)
Ricordiamo i requisiti di atomicita'
Comportamenti poss ibili :
S1 S3 SrS0 S2
UNDO UNDO UNDO REDO
La transazione e' una trasformazione atomicadallo stato iniziale a quello finale.
b rollback work o errore prima del commit : undo
a commit work : successo
c guasto dopo il commit : redo
Giornale delle transazioni
File sequenziale di record che descrivono leazion i svolte dalle transazion i (top = istante corrente)
B(T1) U(T1) U(T1) C(T1)
Top d elgiornaleRecord delle transazion i T1
Principale funzione del giornale ditransazione
Registra in memoria stabile le azion i svoltedalla transazione sotto forma di transizionidi stato
se UPDATE (U)trasforma O dal valore O1 al valore O2
registrazione sul giornale:
BEFORE-STATE(U) = O1AFTER-STATE(U) = O2
Uso del giornale
DOPO : rollback-work oppure guasto UNDO T1: O = O1
DOPO : guasto dopo commit REDO T1: O = O2
Idempotenza di undo e redo:UNDO(T) = UNDO(UNDO(T))REDO(T) = REDO(UNDO(T))
Tipi di record nel giornale
• Record relativi ai comandi transazionali:
BEGIN, COMMIT, ABORT
• Record relativi alle operazioni:
INSERT, DELETE, UPDATE
• Record relativi alle azioni di recovery:
DUMP, CHECKPOINT
Tipi di record nel giornale• Record relativi ai comandi transazionali:
B(T), C(T), A(T)• Record relativi alle operazioni:
I(T,O,AS), D(T,O,BS), U(T,O,BS,AS)
• Record relativi alle azioni di recovery:DUMP, CKPT(T1,T2,…Tn)
• Campi dei record: T identificatore di transazione O identificatore di oggetto BS, AS: before state, after state
Regole di scrittura del giornale
a Write-Ahead-Log : si scrive il giornale (parte before) prima del database consente di disfare le azion i
b Commit Rule: si scrive il giornale (parte after) prima del commit consente di rifare le azioni
Scritture del log e della base di dati
t
BEGIN COMMITUPDATE X UPDATE Y
WRITE X WRITE Y
• Scrittura del database prima del commit(richiede scritture per realizzare l’abort)
Scritture del log e della base di dati
t
BEGIN COMMITUPDATEX
UPDATE Y
WRITE X WRITE Y
• Scrittura del database dopo il commit(non richiede scritture per realizzarel’abort)
Scritture del log e della base di dati
t
BEGIN COMMITUPDATEX
UPDATE Y
WRITE X WRITE Y
• Scrittura del database in un istantearbitrario (consente di ottimizzare lagestione del buffer)
In caso di guasto
a Guasto soft perdita di memoria centrale richiede una RIPRESA A CALDO
b Guasto hard danneggiamento della memoria richiede una RIPRESA A FREDDO
Modello fail -stop
attivo
stop
ripresa
FAIL BOOT
FAIL
START
Checkpoint
Istante di tempo "consistente"(in cui tutte le transazioni scrivono i lorodati dal buffer al disco)
top d elgiornale
checkpoint
Si registrano le transazioni att ive
Dump
Istante di tempo in cui viene effettuata unacopia completa della base di dati(tipicamente di notte oppu re alla fine dellasett imana); si registra la presenza dellacop ia di DUMP
top d elgiornale
dump
Ripresa a ca ldo
• Si leggon o le registrazion i del giornale a partire dal checkpoint
• Si separano le transazioni in: INSIEME UNDO (da disfare) INSIEME REDO (da rifare)
• Si eseguono le azion i di UNDO e REDO
Ripresa a ca ldo
UNDO :transazioni att iveprima del commitREDO :transazioni att ivedopo il commit
1. ultimocheckpoint
2. lettura dellog
Ripresa a ca ldo
3. ritorno alla piu’vecc hia transazioneattiva
4. esecuzione delleazion i di UNDO eREDO
Esempio di ripresa a ca ldo• B(T1)• B(T2)• U(T1,O1,B1,A1)• I(T1,O2,A2)• U(T2,O3,B3,A3)• B(T3)• U(T3,O4,B4,A4)• D(T3,O5,B5)• CKPT(T1,T2,T3)• C(T2)• B(T4)• U(T4,06,B6,A6)• A(T4)• guasto
• UNDO=(T1,T2,T3) REDO=( )
• UNDO=(T1,T3,T4) REDO=(T2)
Esempio di ripresa a ca ldo• B(T1)• B(T2)• U(T1,O1,B1,A1)• I(T1,O2,A3)• U(T2,O3,B3,A3)• B(T3)• U(T3,O4,B4,A4)• D(T3,O5,B5)• CKPT(T1,T2,T3)• C(T2)• B(T4)• U(T4,06,B6,A6)• A(T4)• guasto
• O1 = B1• DELETE(O2)• O3 = A3
• O4 = B4• O5 = B5
• O6 = B6
RESTART
UNDO=(T1,T3,T4) REDO=(T2)
Ripresa a freddo
• Si ripristinano i dati a partire dal backup
• Si eseguono le operazion i registrate sul giornale fino all 'istante del guasto
• Si esegue una ripresa a caldo
Sommario
• Concett i e prob lemi– Memoria stabile– Tecniche di scrittura del buffer– Poli tiche di gestione ott imale del buffer– Modello fail -stop– Tecniche di recovery a freddo e a caldo
• Elementi architetturali– Buffer– Giornale
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 12
(43 lucidi)
Basi di datidistribuite
Motivazioni delladistribuzione dei dati
• Natura intrinsecamente distribu ita delle organizzazion i
• Evoluzione degli elaboratori - aumento della capacita' elaborativa - riduzione di prezzo
• Standard d i interoperabilita'
• Evoluzione della tecnolog ia dei DBMS
Tipo log ie di basi di dati distribuite
a RETE : LAN (Local Area Network) WAN (Wide Area Network)
SYBASE ORACLE DB2
CLIENT
b DBMS : Sistema omogeneo Sistema eterogeneo
Tipici esempi di applicazioni
LAN WAN
OMOGENEO
ETEROGENEO
Applicazion igestionalie finanziarie
Sistemi diprenotazione,applicazion ifinanziarie
Applicazion igestionaliinterfunzionali
Sistemi diprenotazioneintegrati, sistemiinterbancari
Problemi dellebasi di dati distribuite
• Autonomia e cooperazione• Trasparenza• Efficienza• Aff idabili ta'
Autonomia e cooperazioneL'esigenza di autonomia:- Una reazione ai ''Centri EDP'' - Portare competenze e controllo laddove vengo no gestiti i dati- Rendere la maggior parte delle app licazioni NON distribuite (!)
L'esigenza di cooperazione:- Alcune applicazioni sono intrinsecamente distribuite e richiedono l'accesso a piu' basi di dati
Frammentazione dei dati
Scomposizione delle tabelle in modo da consentire la loro d istribuzione
proprieta': - Completezza - Ricostruibil ita'
Frammentazione orizzontale
FRAMMENTI: insiemi di tuple
FR1
FR2
FR3COMPLETEZZA: presenza di tutte le tup le
RICOSTRUZIONE: unione
Frammentazione verticale
FRAMMENTI: insiemi di attributi
COMPLETEZZA: presenza di tutt i gli att ributi
RICOSTRUZIONE: join sulla chiave
FR1 FR2 FR3
Esempio: conti correnti bancari(lezione 7)
CONTO-CORRENTE (NUM-CC,NOME,FILIALE,SALDO)TRANSAZIONE (NUM-CC,DATA,PROGR,AMMONTARE,
CAUSALE)
CENTRO
FILIALE1 FILIALE2 FILIALE3
Frammentazione orizzontaleprincipale
Fi = SELECT[Pi] R
esempio:CONTO1 = SELECT [FILIALE=1] CONTO-CORRENTECONTO2 = SELECT [FILIALE=2] CONTO-CORRENTECONTO3 = SELECT [FILIALE=3] CONTO-CORRENTE
Frammentazione orizzontalederivata
Fi = PROJECT [ATTR(S)] S JOIN Ri
esempio:TRANS1 = PROJECT[ATTR(TRANSAZIONE)] TRANSAZIONE JOIN CONTO1TRANS2 = PROJECT[ATTR(TRANSAZIONE)] TRANSAZIONE JOIN CONTO2TRANS3 = PROJECT[ATTR(TRANSAZIONE)] TRANSAZIONE JOIN CONTO3
Allocazione dei frammenti
Rete : 3 siti periferici, 1 sito centrale
Allocazione: locale centrale
Allocazione dei frammenti
CONTO1
CONTO2
CONTO3
TRANS1
TRANS2
TRANS3
CENTRO
CONTO1
TRANS1
FILIALE 1
CONTO2
TRANS2
FILIALE 2
CONTO3
TRANS3
FILIALE 3
Livelli di trasparenza
Modali ta’ per esprimere interrogazion iofferte dai DBMS commerciali :
LIVELLI: FRAMMENTAZIONEALLOCAZIONELINGUAGGIO
Trasparenza di frammentazione
SELECT SALDO FROM CONTO-CORRENTE WHERE NUM-CC=45
QUERY :estrarre il saldo d el conto corrente 45
Trasparenza di allocazione
SELECT SALDO FROM CONTO1 WHERE NUM-CC=45
IPOTESI :Conto corrente 45 presso la Fili ale 1
(locale)
Trasparenza di allocazione
SELECT SALDO FROM CONTO1 WHERE NUM-CLI=45IF (NOT FOUND) THEN( SELECT SALDO FROM CONTO2 WHERE NUM-CLI=45 UNION SELECT SALDO FROM CONTO3 WHERE NUM-CLI=45 )
IPOTESI :Allocazione incerta, probabilmente alla
fili ale 1
Trasparenza di li nguaggio
SELECT SALDO FROM CONTO1@1 WHERE NUM-CLI=45IF (NOT FOUND) THEN( SELECT SALDO FROM CONTO2@C WHERE NUM-CLI=45 UNION SELECT SALDO FROM CONTO3@C WHERE NUM-CLI=45 )
Trasparenza di frammentazione
SELECT CC-NUM, PROGR, AMMONTARE FROM CONTO-CORRENTE AS C JOIN TRANSAZIONE AS T ON C.NUM-CC=T.NUM-CC WHERE SALDO < 0
QUERY :estrarre i movimenti dei conti con saldonegativo
Trasparenza di allocazione(join distribuito)
SELECT CC-NUM, PROGR, AMMONTARE FROM CONTO1 JOIN TRANS1 ON …... WHERE SALDO < 0UNIONSELECT CC-NUM, PROGR, AMMONTARE FROM CONTO2 JOIN TRANS2 ON …... WHERE SALDO < 0UNIONSELECT CC-NUM, PROGR, AMMONTARE FROM CONTO3 JOIN TRANS3 ON …... WHERE SALDO < 0
Trasparenza di li nguaggio
SELECT CC-NUM, PROGR, AMMONTARE FROM CONTO1@1 JOIN TRANS1@1 ON …... WHERE SALDO < 0UNIONSELECT CC-NUM, PROGR, AMMONTARE FROM CONTO2@C JOIN TRANS2@C ON …... WHERE SALDO < 0UNIONSELECT CC-NUM, PROGR, AMMONTARE FROM CONTO3@C JOIN TRANS3@C ON …... WHERE SALDO < 0
Trasparenza di frammentazione
UPDATE CONTO-CORRENTE SET FILIALE = 2 WHERE NUM-CC=45 AND FILIALE=1
UPDATE :sposta il cliente 45 dalla fili ale 1 alla fili ale 2
Trasparenza di allocazione(e replicazione)
INSERT INTO CONTO2 SELECT * FROM CONTO1 WHERE NUM-CC=45
INSERT INTO TRANS2 SELECT * FROM TRANS1 WHERE NUM-CC=45
DELETE FROM CONTO1 WHERE NUM-CC=45
DELETE FROM TRANS1 WHERE NUM-CC=45
Trasparenza di li nguaggioINSERT INTO CONTO2@2 SELECT * FROM CONTO1 WHERE NUM-CC=45INSERT INTO CONTO2@C SELECT * FROM CONTO1 WHERE NUM-CC=45
INSERT INTO TRANS2@2 SELECT * FROM TRANS1 WHERE NUM-CC=45INSERT INTO TRANS2@C SELECT * FROM TRANS1 WHERE NUM-CC=45
(in modo analogo: 2 coppie di DELETE)
Eff icienza
• Ottimizzazione delle query• Modali ta' di esecuzione - seriale - parallela
Esecuzione seriale
CONTO2
CONTO3
CENTRO
CONTO1
FILIALE1
CLIENT
Esecuzione parallela
CLIENT
CONTO1
FILIALE1
CONTO3
FILIALE3
CONTO2
FILIALE2
Transazioni distribuite
BEGIN TRANSACTION UPDATE CONTO1@1 SET SALDO=SALDO + 500.000 WHERE NUM-CLI=45; UPDATE CONTO2@2 SET SALDO=SALDO - 500.000 WHERE NUM-CLI=35;COMMIT-WORKEND TRANSACTION
Transazioni distribuite
CLIENT
FILIALE1
45 + 500.000
FILIALE2
35 - 500.000
Proprieta' acidedell’ esecuzione distribuita
• Isolamento
se c iascunasottotransazione e' a duefasi la transazione e'globalmente serializzabile
• Consistenza
se c iascunasottotransazionepreserva l'integrita'locale i dati sonoglobalmente consistenti
• Persistenza
se c iascunasottotransazione gestiscecorrettamente i log, i datisono globalmentepersistenti
• Atomicita'
e' il principale problemadelle transazionidistribuite
Guasti in un sistema distribuito
• Caduta di nod i
MSG
• Perdita di messaggi
• Interruzione della rete
Protocolli distribuitie perdita di messaggi
A: SEND(B,MSG)
B: RECEIVE(MSG)SEND(A,ACK)
A: RECEIVE(ACK)
Commit a due fasi
Protocollo per garantire l'atomicita' disotto-transazioni distribu ite
Come un matrimonio - fase uno: dichiarazione di intenti - fase due: dichiarazione del matrimonio
Protagonisti - un coordinatore - molti partecipanti
Record nel log del coordinatore
a PREPARE: identita' dei partecipantib GLOBAL COMMIT/ABORT: decisionec COMPLETE: termine del protocollo
Record nel log del partecipante
a READY: dispon ibili ta' al commitb LOCAL COMMIT/ABORT: decisione ricevuta
Fase 1
C: WRITE-LOG(PREPARE) SET TIME-OUT SEND (Pi,PREPARE)
Pi: RECEIVE(C,PREPARE) IF OK THEN WRITE-LOG(READY) MSG=READY ELSE MSG=NO SEND (C,READY)
Fase 2C: RECEIVE(Ci,MSG) IF TIME-OUT OR ONE(MSG)=NO THEN WRITE-LOG(GLOBAL-ABORT) DECISION=ABORT ELSE WRITE-LOG(GLOBAL-COMMIT) DECISION=COMMIT SEND(Pi,DECISION)
Pi: RECEIVE(C,DECISION) IF COMMIT THEN WRITE-LOG(COMMIT) ELSE WRITE-LOG(ABORT) SEND (C,ACK)
C: RECEIVE(Pi,ACK) WRITE-LOG(COMPLETE)
Diagramma del commit a due fasi
coordinatore
partecipante
t
t
PREPARE GLOBALDECISION
READY LOCALDECISION
PREPARE MSG DECISION
COMPLETE
ACK
Standardizzazione del protocollo
Standard X-open
- interfacc ia TM: definisce i servizi del coordinatore offerti ad un client per eseguire il commit di partecipanti eterogenei
- interfacc ia XA: definisce i servizi di partecipanti passivi che rispondon o a chiamate del coordinatore (offerta da molti DBMS sul mercato)
Compless ita' del protocollo
Deve poter gestire tutt i i guasti:- caduta del coordinatore- caduta di uno o piu' partecipanti- perdite di messaggi
Recovery del protocollo 2PC
coordinatore
partecipante
t
t
PREPARE GLOBALDECISION
READY LOCALDECISION
PREPARE MSG DECISION
COMPLETE
ACK
Sommario
• Concett i e prob lemi– Trasparenza– Efficienza
– Atomicita' distribuita
• Elementi architetturali– Frammentazione
• Protocollo– Commit a due fasi
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 13
(37 lucidi)
Basi di datiparallele
Scalabili ta' delle applicazioni
• Carico: insieme di tutte le applicazioni (query)
• Scalabili ta': abili ta' di conservare prestazioni elevate al crescere del carico
• Dimension i di crescita : - numero delle query - complessita' delle query
Due tipologie di carico
• Transazionale carico: transazioni brevi misura: tps (transazion i per secondo ) tempo d i risposta: pochi secondi
• Analisi dei dati carico: query SQL complessa tempo d i risposta: variabile
Parallelismo
• Ottenuto tramite molti processori che cooperano in un a un ica architettura informatica
• Due tipi di parallelismo
inter-query ciascuna query affidata ad un solo processore (per carichi transazionali)
intra-query ciascuna query affidata a molti processori (per carichi di analisi dei dati)
Architetture a confronto
SHARED-NOTHING
rete veloce
DISCOMEMORIA
PROCESSORE
DISCOMEMORIA
PROCESSORE ……
Architetture a confronto
SHARED-MEMORY
PROCESSORE ……PROCESSORE
MEMORIADISCO DISCO….
Architetture a confronto
SHARED-DISKS
……
DISCO DISCO….
MEMORIA
PROCESSORE
MEMORIA
PROCESSORE
Benchmark
• standardizzazione: 1 del database 2 del carico - codice transazioni - modali ta' di invio - frequenza di arrivo 3 della modalita' di misurazione
• varie tipolog ie di carico tpc-a: transazionale tpc-b: misto tpc-c: analisi dei dati
Metodi per confrontare le prestazion i disistemi diversi (in competizione)
Curva di speed-up
Misura il crescere di efficienza al crescere delnumero d i processori
tps
numero diprocess ori
curvareale
..
.
Curva di sca le-up
Misura il crescere di costo unitariocomplessivo per transazione al crescere delnumero d i processori
costounitario
numero diprocess ori
curvareale. . .
Join distribuito
E' l'operazione di analisi dei dati piu'onerosa
consideriamo:
conto corrente
JOIN
transazione
Join distribuito
UNIONE
CONTO1
TRANS1
JOIN
CONTO2
TRANS2
JOIN
CONTO3
TRANS3
JOIN
Requisiti per il join distribuito
I domini degli attributi di join devonoessere partizionati e ogn i partizioneassegnata ad un a copp ia di frammenti(ad esempio su valori numerici tra1 e 300000:• da 1 a 100000• da 100000 a 200000• da 200000 a 300000)
In molti sistemi paralleli i dati vengonoinizialmente ridistribuiti sui dischi perottenere questa distribuzione
Basi di datireplicate
Replicazione dei dati
E' un ingrediente fondamentale deisistemi informativi
motivazion i:• eff icienza• aff idabili ta'• autonomia
Modali ta’ di replicazione
• Asimmetrica
COPIAPRIMARIA
COPIASECONDARIA
propagazione
modifiche
Modali ta’ di replicazione
• Simmetrica
COPIA 1 COPIA 2
modifiche modifiche
Modali ta’ di trasmiss ionedelle variazioni
• Trasmissione asincrona
COPIA 2
propagazione
transazione dialli neamento
COPIA 1
transazionemaster
Modali ta’ di trasmiss ionedelle variazioni
• Trasmissione sincrona
COPIA 1 COPIA 2
transazionemaster
Modali ta’ di alli neamento
• Refresh
COPIA 1 COPIA 2
INTEROCONTENUTODELLA COPIA 1
• Allineamento: - periodico - a comando - ad accumulo d i variazione
Modali ta’ di alli neamento
COPIA 1 COPIA 2
DELTA-PLUSDELTA-MINUS
• Incrementale
• Allineamento: - periodico - a comando - ad accumulo d i variazione
Meccanismi per la replicazioneasimmetrica, asincrona e incrementale
Prodotto: Replication Manager- con due moduli : CAPTURE, APPLY
COPIA 1 COPIA 2
modifiche
DELTA-PLUSDELTA-MINUS
CAPTURE APPLY
Trigger di replicazione
catturano le variazion i ai dati nelletabelle DELTA-PLUS e DELTA-MINUSin modo trasparente alle app licazioni
Trigger di replicazioneCREATE TRIGGER CAPTURE-INSAFTER INSERT ON PRIMARYFOR EACH ROWINSERT INTO DELTA-PLUS VALUES (NEW.*)
CREATE TRIGGER CAPTURE-DELAFTER DELETE ON PRIMARYFOR EACH ROWINSERT INTO DELTA-MINUS VALUES (OLD.*)
CREATE TRIGGER CAPTURE-UPDAFTER UPDATE ON PRIMARYFOR EACH ROWBEGININSERT INTO DELTA-PLUS VALUES (NEW.*)INSERT INTO DELTA-MINUS VALUES (OLD.*)END
Un caso particolare:replicazione in computer mobili
• Computer mobili : saltuariamente collegati ad una rete
• Copie disconnesse per ore o g iorni intere, po i riconnesse (riconcili azione)
• Applicazione : agenti di vendita mobili
Alli neamento di copie disconnesse
• Richiede spesso la replicazione simmetrica
COPIA DELVENDITORE
COPIACENTRALE
modifiche modifiche
(con riconcil iazione)
Datawarehouse
Data warehouse
• Un ambiente per l'analisi dei dati
• La principale innovazione architetturale dei sistemi informativi
• Consente di separare: - on-line transaction process ing (OLTP) - on-line analytical process ing (OLAP)
Architettura compless ivacon OLTP e OLAP
DATABASE
TERMINALISTImodifiche in linea
ambiente OLTP
DATAWAREHOUSE
ANALISTIquery complesse
ambiente OLAP
Motivazioni della separazionedegli ambienti
• Tipo log ia di utenza differente
• Organizzazione dei dati differente
• Tecniche completamente innovative - tipo d i query e di interazione - uso del parallelismo
Moduli i n una data warehouse
EXPORTEXPORT EXPORT
EXPORT
ANALISI
IMPORTDATAWAREHOUSE
SISTEMI PRODUTTORI DI DATI
Altri moduli
• Dizionario dati (elenco dei dati e dei loro tipi, ma anche confronti, definizion i di compatibilita', etc)
• Ambiente di progettazione (strumenti per estrarre i dati, verificare il contenuto, caricare la warehouse)
Differenze fra data warehouse eDBMS tradizionale
a Modali ta' d'uso - funzionamento "normale" : query di sola lettura - aggiornamento: lunghi programmi batch
b Progetto fisico dei dati - supporto accesso sequenziale - ind ici sparsi, strutture dati " invertite" - clusterizzazion i e raggruppamenti predefiniti - parallelismo intra-query
c Ambiente di sviluppo - orientati ad u tenti finali non informatici
Problemi di progetto
• Miglioramento della quali ta' dei dati - filtro d i dati scorrett i - integrazione di dati da plurime fonti
• Definizione delle modali ta' di acquisizione - uso dei "replication manager"
• Definizione dei requ isiti - individuazione dei principali prob lemi decisionali per l’i mpresa• Scelta dei dati - individuazione delle "data source" coinvolte
Sommario
• Concett i e prob lemi– Benchmark (valutazione delle prestazioni)
– Replicazione sincrona e asincrona– Criteri di progetto della data warehouse
• Tecniche– Parallelismo dei dati (benchmark, join distribuito)– Replicazione dei dati (varie modali ta', trigger di replicazione)– Data warehouse (moduli di sistema)
Prof. Stefano CeriSistemi Informativi Aziendali
(9651A)Lezione 14
(44 lucidi)
Modelli e linguaggiper l'analisi
dei dati
Il problema
• Limitazion i della tecno log ia relazionale - Diff icolta' d'uso - Rigidita'
• Conseguenze - Uso op erativo: buono - Uso strategico: scarso
• Reazione: modelli , linguaggi e tecniche per On-Line Analytical Processing (OLAP)
Obiettivi di OLAP
• Definire una versione consistente, pubb lica, di quali ta' dei dati aziendali
• Facili tare l'accesso ai dati per uso strategico
• Supporto alle decision i e business plann ing (finanze, marketing, vendite)
Applicazioni di OLAP
Argomenti
• Modello multi-dimensionale dei dati• Data cube• Data mining
Modello multidimensionale
• E' una struttura entita'-relazion i semplificata sui cui fare interrogazion i standard
• Database strutturato in: - Fatt i - Dimension i di analisi
Un esempio : gestione vendite
vendite(fatti)
prodo tt i
promozionisupermercato
tempo
(0,N) (1,1) (1,1) (0,N)
(0,N)
(1,1)
(1,1)
(0,N)
Un altro esempio : gestione rimborsi
rimborsi(fatti)
polizze
problemiclienti
tempo
(0,N) (1,1) (1,1) (0,N)
(0,N)
(1,1)
(1,1)
(0,N)
Un altro esempio : gestione terapie
terapia(fatti)
paziente
patologiamedico
ospedale
(0,N) (1,1) (1,1) (0,N)
(0,N)
(1,1)
(1,1)
(0,N)
Torniamo a : gestione vendite
vendite(fatti)
prodott i
promozion isupermercato
tempo
(0,N) (1,1) (1,1) (0,N)
(0,N)
(1,1)
(1,1)
(0,N)
Le esigenze dell’i mpresa
I responsabili dei supermercati vog lionopoter indagare sui fattori che influenzano le vendite: - tipo log ia dei prodo tt i - istante di tempo in cui avviene la vendita - caratteristiche del supermercato - promozioni
Fatt i
COD-PROD COD-MAGAZ COD-TEMPO COD-PROMO RICAVO-GLOBALE QUANTITA'-VENDUTA RICAVO-UNITARIO
Dimensione dei prodotti
COD-PROD CATEGORIA SOTTO-CATEGORIA MARCA IMBALLO PESO INGOMBRO FORNITORE
Dimensione dei supermercati COD-MAGAZ NOME INDIRIZZO CITTA' REGIONE DISTRETTO-DI-VENDITA TELEFONO FAX NOME-MGR DIMENSIONI LOGISTICA
Dimensione del tempo
COD-TEMPO GIORNO-SETTIMANALE GIORNO-MENSILE GIORNO-ANNUALE SETTIMANA-MENSILE SETTIMANA-ANNUALE MESE-ANNUALE STAGIONE FLAG-PREFESTIVO FLAG-FESTIVO
Dimensione delle promozioni COD-PROMO NOME-PROMO TIPO-SCONTO SCONTO PUBBLICITA' ALLESTIMENTO FLAG-COUPON DATA-INIZIO DATA-FINE COSTO AGENZIA
Esempio di query con browser
promozionepaghi 2 prend i 3offerta 40%offerta 20%omaggio (...)…..
zonanordestcentro....
periodogennaiofebbraiomarzo....
osservazionericavo-totalequantita'-vendu taricavo-unitario
somma(ricav i)somma(quantita')
febbraio/ pasta aprile
prodo ttolattepanepasta....
La stessa query in SQL
SELECT C1, C2, AGGR(C3), AGGR(C4)FROM FATTI, DIM1, DIM2WHERE JOIN-PRED(FATTI,DIM1) AND JOIN-PRED(FATTI,DIM2) AND SELECT-PRED(DIM1) AND SELECT-PRED(DIM2)GROUP BY C1, C2ORDER BY C1, c2
Risultato
mesefebbraiomarzoaprile
Sommaammontare130.000.000140.000.000135.000.000
prodo ttopastapastapasta
Sommaquantita'
45.00050.00051.000
• Presentazione: - fog lio elett ron ico (spreadsheet) - forma grafica
Drill -down: aggiunta di unadimensione
• Drill -down sulla zona
mesefebbraiofebbraiofebbraiomarzomarzomarzoaprileaprileaprile
zonanordestcentronordestcentronordestcentro
prodo ttopastapastapastapastapastapastapastapastapasta
Sommaquantita'
15.00017.00013.00018.00018.00014.00018.00017.00016.000
Roll -up: eliminazione di unadimensione
• Roll -up sul mese
zonanordestcentro
prodo ttopastapastapasta
Sommaquantita'
51.00052.00043.000
Query aggregate
Esempi:• Totale delle vendite per categoria di prodo tto per supermercato per giorno• Totale delle vendite mensil i di prodo tt i per supermercato• Totale delle vendite mensil i per categoria per supermercato• Media delle vendite mensili per categoria su tutti i supermercati
Problema di progetto
• Scelta di alcune aggregazion i da materializzare (mantenere) in modo da favorire le query relative
modifiche
FATTI
aggregazione
AGGREGATI
query
modifiche
Tipiche dimensionidella data warehouse
tempo: 730 giornimagazzini: 300prodo tt i: 30.000vendite quo tidiane: 3.000promozion i: non piu' di una per prodo tto vendutovendite: 730 x 300 x 3000 x 1 = 657 mili oni.dimension i: 657 mil ion i x 6 attributi x 4 byte = 16gb.
Aggregazione in SQL : data cube
• Esprime tutte le aggregazioni possibili delle tuple di una tabella
• Utili zza il nuo vo valore po limorfo ALL
Data cube in SQL
SELECT MODELLO, ANNO, COLORE, SUM(VENDITE)FROM VENDITEWHERE MODELLO IN {'Fiat','Ford'} AND COLORE = 'Rosso' AND ANNO BETWEEN 1994 and 1995GROUP BY MODELLO, ANNO, COLOREWITH CUBE
Fatt i rilevanti
modellofiatfiatford
colorerossorossorosso
anno199419951994
vendite508580
Dati nel data cubemodello
fiatfiatfiatfiatfiatfiatfordfordfordfordALLALLALLALLALLALL
colore
rossorossoALLALLrossoALLrossoALLrossoALLrossorossorossoALLALLALL
anno
1994199519941995ALLALL19941994ALLALL19941995ALL19941995ALL
sum (vendite)
50855085
13513580808080
13085
21513085
215
Visualizzazione del data cube
fiat
.
.
1995
1994
ford. .
rosso.
.
. .
. .
.
.ALLALLALL
Roll up
SELECT MODELLO, ANNO, COLORE, SUM(VENDITE)FROM VENDITEWHERE MODELLO IN {'Fiat','Ford'} AND COLORE = 'Rosso' AND ANNO BETWEEN 1994 and 1995GROUP BY MODELLO, ANNO, COLOREWITH ROLL UP
Dati nel roll up
modello
fiatfiatfordfiatfiatfordfiatfordALL
colore
rossorossorossoALLALLALLALLALLALL
anno
199419951994199419951994ALLALLALL
sum(vendite)
508580508580
13580
215
Data mining
• Obiettivo: estrarre informazione nascosta nei dati in modo d a consentire decision i strategiche
• Una materia interdisciplinare: - statistica, algoritmica, reti neurali, geometria frattale
Applicazioni del data mining
- Analisi di mercato: prodotti acqu isiti insieme o in sequenza - Analisi di comportamento: ind ividuare usi ill eciti di credit card - Previsione: prevedere il costo delle cure mediche - Controllo: errori di produzione
Applicazione : analisi delle vendite
Trans
11222344
Data
12/17/9512/17/9512/18/9512/18/9512/18/9512/18/9512/19/9512/19/95
Oggetto
pantalon i-sc iscarponimagliettagiaccastivaligiaccamagliettagiacca
Quantita'
11111131
Prezzo
140.000180.000 25.000300.000 70.000300.000 25.000300.000
Regole di associazione
• Ricercano rego larita' nei dati: quando si acquistano scarponi, si acqu istano sci
• Strutturate come: - corpo: premessa della rego la. - testa: conseguenza della rego la.
Caratteristiche delleregole di associazione
• Suppo rto: probabilita' che siano presenti in una transazione entrambi gli elementi di una rego la• Confidenza: probabilita' che sia presente in una transazione la testa di una rego la, essendo presente il corpo• Formulazione del prob lema: estrarre tutte le rego le con suppo rto e confidenza superiori a valori prefissati
Esempi di regole di associazione
Corpo
pantalon i-sc iscarpon imagliettemagliettestivalistivaligiacchegiacche {magliette,stivali} {magliette,giacche} {stivali , giacche}
Testa
scarpon ipantalon i-sc istivaligiacchemagliettegiacchemagliettestivaligiacchestivalimagliette
Confidenza
110.510.510.660.3310.51
Suppo rto
0.250.250.250.250.250.250.50.250.250.250.25
Regole di associazione in SQL
MINE RULE OGGETTI-VENDUTI-ASSIEME ASSELECT DISTINCT OGGETTO AS BODY, OGGETTO AS HEAD, SUPPORT, CONFIDENCEFROM VENDITEGROUP BY TRANSEXTRACTING RULES WITH SUPPORT: 0.1 CONFIDENCE: 0.2
Altri esempi
• Oggett i vendu ti nella stessa promozione• Oggett i vendu ti ass ieme d'estate ma non d'inverno• Oggett i vendu ti ass ieme in quanto disposti in modo p articolare• Oggett i acqu isiti in sequenza dallo stesso cliente
Discretizzazione
Rappresentazione di un do minio continuotramite oppo rtun i valori discreti
vantagg i:• Rappresentazione compatta dei valori• Determinazione di valori critici• Facili tazione della analisi dei dati successiva
Class ificazione
Catalogazione di un fenomeno particolare inuna classe predefinita
• Fenomeno p resentato sotto forma di fatt i elementari (tup la)• Costruzione del class ificatore a partire da un set di dati di prova (training set)• Classificatori rappresentati come alberi di decisione
Esempio di classificatore :individuazione di polizze a rischio POLIZZA(NUM-PATENTE, ETA', TIPO-AUTO)
ETA' < 23
TIPO AUTO = sportiva
TIPO AUTO = camion
rischioelevato
rischioelevato
rischioelevato
rischiobasso
vero falso
vero falso
vero falso
Sintesi dei vari aspett ipresenti nella analisi dei dati
ambiente:• data warehou se
modello:• multidimensionale
estension i di SQL• data cube• mine rule
tecnolog ie di base:• distribuzione• parallelismo• replicazione
tecnolog ie specifiche:• browser (e visualizzatori)• data mining - associazione - discretizzazione - class ificazione