Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003



A.A. 2003

Appunti su data base
di:


Anna Maria Carminelli Gregori

Parte 1
Obiettivi del Corso
Introduzione a d.b. Progetto & utilizzo, tratti essenziali
Gestione di d.b. Strumenti necessari, SORT & sua
Complessita’
db & DBMS
fasi di progettazione dei d.b.
DBMS: modelli, architettura, composizione…
1
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Corso di laurea: Ingegneria Elettronica
Indirizzo:
Calcolatori Elettronici
Insegnamento: Basi di Dati
A.A.
2000-2003
Docente: A.M.Carminelli Gregori
Finalita’:
Il corso intende fornire le conoscenze necessarie per l' analisi, il progetto e lo sviluppo di Software in ambienti
dotati di sistemi informativi e sistemi di elaborazione di vario tipo.
L' impostazione prevede una particolare attenzione ai dati, con approfondimenti sulla loro organizzazione,
memorizzazione ed elaborazione ottimale tramite appositi algoritmi, strutture, relazioni, forme normali, vincoli,
linguaggi, modelli di sicurezza, possibile condivisione e distribuzione. In questo ambito verranno trattati i modelli di
dati su cui si basano i Sistemi di Gestione di Basi di Dati con riferimento ai Sistemi piu’ in uso.
Schema di Programma:
Il Corso verte sul Progetto e la Realizzazione di Software utile nella costruzione di Sistemi Informativi trattando
ed illustrando gli argomenti seguenti:
_ Caratteristiche essenziali delle basi di dati e loro gestione. Strumenti necessari e relativi Algoritmi. Esempio del
Sort con Algoritmi risolutivi di Complessita’ diversa dipendente dalla Struttura di Dati utilizzata;
_ Basi di Dati, Sistemi di Gestione di Basi di Dati (S.G.B.D.), loro architettura, utilizzo & Linguaggi 4GL;
Modelli dei dati (Relazionale e riferimenti al Gerarchico ed al Reticolare, con cenni sul paradigma Object_
Oriented);
Aspetti di progettazione di Basi di Dati con utilizzo del modello di progettazione Entity-Relationship, problemi
di sicurezza, integrita’, condivisione e gestione distribuita dei dati con possibili soluzioni & architetture
(centralizzata, client-server, distribuita);
Aspetti di implememtazione: caratteristiche fondamentali;
_ Strutture ed Insiemi di Dati di tipo lineare, gerarchico, non lineare, multidimensionale: relativi Algoritmi, loro
Complessita’, implementazioni;
Durante il corso e’ previsto lo svolgimento di una tesina (cfr. Nota).
Testi:
a
P.Atzeni, S.Ceri, S. Paraboschi, R. Torlone: "basi di dati", 2 edizione, McGraw-Hill, 1999.
N.Wirth: "Algorithms + Data Structures = Programs", Prentice-Hall, INC.
Riferimenti:
A.C. Lorents, J.N. Morgan: “Database systems”, The Dryden Press,
C.J.Date: "An Introduction to Database Systems", Addison-Wesley Pub.Company
G.Martella, Castano, Samarati: "Sicurezza delle basi di dati", mondadori informatica
B.Fadini, C.Savy: "Fondamenti di informatica Fondamenti teorici", Liguori Editore
Appunti e articoli consigliati durante lo svolgimento del corso.
Nota:
Come si puo’ dedurre dal programma, il Corso vuole fornire le nozioni fondamentali per:
1) progettare Basi di Dati usando il modello di progettazione Entity-Relationship;
2) realizzare un Sistema software con riferimento ad una Base di Dati particolare, partendo da un progetto ed
utilizzando le Strutture dati scelte in base alle caratteristiche logiche e fisiche piu’ idonee per il funzionamento
del Sistema stesso.
Questo e’ il lavoro da svolgere come tesina, che nell' anno corrente viene realizzato sugli elaboratori del
Laboratorio del DEEI con l’ utilizzo di software applicativo, di rete e di S.G.B.D. come Access ed Oracle con l’
obiettivo di applicare le nozioni apprese ed anche realizzare strumenti utili in ambienti vari.
2
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
basi di dati o data base (d.b.)
Il Corso vuole evidenziare 2 aspetti fondamentali del d.b. ossia Progetto ed Uso.
PRIMO il progetto che comporta un’ analisi approfondita dell’ ambiente che si vuole
“rappresentare”. Il d.b. si puo’ intendere come la “rappresentazione ben formata”
di un ambiente (una Scuola, una Chiesa, un gruppo di lavoro….) con le sue funzioni
primarie (COSA si vuole realizzare in quell’ ambiente) ed i suoi dati fondamentali
(Studenti, Praticanti, Utenti …)
POI l’ uso ossia l’ utilizzo di Software per memorizzare e gestire la rappresentazione
“ben formata”. Il PRIMO e’ l’ aspetto concettuale, l’ altro e’ l’ aspetto pratico che
comporta l’applicazione di un Software che puo’ essere complesso e particolare.
Occorre conoscere entrambi ossia il Corso vuol far conoscere:
 Come si progetta un d.b.
 Come e’ fatto e come si usa il software di gestione del d.b
 Le strutture informative che sono usate nel software di gestione
Per iniziare: alcune domande introduttive e le relative risposte da scegliere
domande
risposte
Che cos'e' un d.b.? 1) un sistema 2) un insieme di archivi integrati 3) software
Motivazioni ?
1) correlare i dati
2) accessi piu’ rapidi 3) facilita’ d’ uso
Che cos'e' un File System ?
1) sistema di file 2) un file di S.O.
3) sistema per gestire file
Che cos'e' un Data Base Management System ?
1) un file 2) data base per S.O.
3) il “
Che cos'e' un Sistema Informativo?
1) un file di S.O. 2) sistema per gestire file
“ “
d.b.
3) un sistema per
organizzare e gestire informazioni
Che cos'e' un Sistema Informatico?
1) sistema per gestire file 2) tipo di Sistema Informativo 3) parte automatizzata
del Sistema Informativo
DEDUZIONI
Per progettare un d.b. ossia un …
occorre un’ analisi approfondita del pre-esistente ambiente in cui il d.b. deve
essere inserito ossia un’ analisi del ... preesistente.
In sostanza lo scopo e’ AUTOMATIZZARE in modo OTTIMALE la gestione di
informazioni.
3
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
base di dati e i suoi 2 Aspetti fondamentali:
1. Progettazione della base di dati;
2.Utilizzo del Sistema di gestione di basi di dati.
1. Progettazione (IMPORTANZA FONDAMENTALE)
 Cosa si vuole ottenere (i Desiderata);

Cosa occorre memorizzare per ottenere i Desiderata.
2. Utilizzo
Come usare i Sistemi a disposizione (manuali, help …)
Che cos'e' il D.B.? in prima approssimazione:
 e’ un insieme di dati persistenti (archivi, file),
 condivisibili,
 organizzati in modo integrato,
 eliminando le ripetizioni di informazioni
(ridondanza 0) indipendentemente dal loro volume.
Motivazioni:
 compattezza & correlazione tra i dati,
 velocita’ di recupero dei dati,
 facilita’ di gestione e di aggiornamento con (parziale o
totale) eliminazione del lavoro di manutenzione dei file,
 funzionante anche in modo concorrente, in rete.
File System (F.S.) e Data Base Management System:
per le Motivazioni precedenti un File System/O.S. non
basta: occorre un D.B.M.S. (Data Base Management
System) ossia un Sistema Gestore del d.b. che estenda le
funzioni del F.S. come indicato anche in seguito.
4
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Schema del Software di Sistema:
Utenti del
d.b.
Programmatori
di Sistema
d.b.
b management system
Utenti Ling.
alto livello
Utenti
interattivi
Programma
nel ling.
Interprete
.
Metodo di Accesso
Buffer Manager / Scheduler
Chiamate di Sistema
GESTORE I/O
Il Software di Sistema fornisce metodi di accesso:
_ utilizzabili direttamente dai “ programmatori di
Sistema”;
_ che diventano servizi base per la gestione di d.b.
_ integrabili con altri strumenti (come il Buffer
Manager e lo Scheduler) tipici dei D.B.M.S.
5
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
AUTOMATIZZARE UN AMBIENTE: il suo SIGNIFICATO e’
illustrato con lo schizzo seguente:
Porzione del
Mondo Reale
Definizione dei TIPI
di oggetti e di funzioni
Astrazione  Tipizzazione; Oggetti  Dati (atomici o composti)
(NOTA: informazione codificata  dato !!)
TIPIZZAZIONE: aiuta a risolvere il problema dell’
ambiguita’
in
quanto
impone
regole
nella
costruzione/interpretazione (codifica/decodifica) di ogni
tipo di dato. E’ questo il problema tipico del
riconoscimento di oggetti in grafica, robotica,…
Tipico esempio di ambiguita’ e’ anche quello che si ritrova
negli ambigrammi = sequenze ambigue di segni grafici
ambigui (vedere l’ ambigramma originale di Hofstadter
Siena=Palio !)
6
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
…perche’ strutturare i dati ? Le MOTIVAZIONI si possono
cosi’sintetizzare:
 elaborazione +efficiente  minore complessita’
algoritmo;
 elaborazione +razionale  indipendenza “fisica” e
“logica” dei dati ossia indipendenza dallo loro posizione
e rappresentazione. Cio’ si puo’esprimere anche cosi’:
“Le applicazioni non devono essere modificate in seguito
a modifiche dell’ organizzazione fisica ne’ a modifiche
dell’ organizzazione logica dei dati” (Albano-Orsini :
“Basi di dati”, Boringhieri) … ma come si fa ? con filtri
di rappresentazione aggiuntivi! La maggiore razionalita’
si puo’ anche semplicemente intendere come la
possibilita’ di svincolarsi dalla sequenzialita’ fisica: cio’
e’ necessario quando i dati devono apparire con
sequenzialita’ diverse;
 possibilita’ di scegliere tra molteplici tipi e modelli di
strutture informative o strutture dati:
tipo statico
(es. array a dimensione fissa);
“ dinamico (“ file “ “
variabile)
modelli omogenei e non, lineari, gerarchici …
TIPIZZAZIONE dei dati e relativa STRUTTURAZIONE
Scelta, analisi, verifica dei TIPI di dati:
I criteri di scelta di un tipo o di un modello sono basati su
parametri di valutazione come:
 Caratteristiche del modello strutturale (es. cardinalita’
fissa o variabile);
 Memoria disponibile e sua permanenza/volatilita’ (es.
dimensioni memoria, tipo di memoria …);
 Operazioni da effettuare e loro frequenza.
7
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Esempio: in C.M. si sceglie una struttura statica (array)
quando non si prevedono frequenti modifiche
(cancellazioni, inserzioni) altrimenti si sceglie una struttura
dinamica. Quale tipo di struttura dinamica ? La scelta e’
fatta in base ai parametri di valutazione come:
 Caratteristiche del modello (sequenziale come un testo?
gerarchico come un organigramma?);
 Memoria disponibile (1, 2, … k puntatori ?);
 Operazioni da effettuare e loro frequenza (ricerche? solo
copie ?).
Modelli di strutture informative dinamiche:
 Lista lineare (unidirez.) semplice: |__|->|____|->|____|->|____|
e doppia con i puntatori nei due sensi;
 albero binario (2 direzioni per nodo cfr. db2003p4):
d
/
\
b
/
f
\
a
/
c e
\
g
 albero a n vie (n direzioni per nodo cfr. db2003p4);
25
30 40
10 20
5 7 8 9 13 15
21 24
27 28
32 38
41 50
 grafo (rete) = { alberi | array }
Per grafi da rappresentare con alberi cfr. appunti a mano 1 pagina da J.
Martin.
8
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Nei linguaggi ad alto livello che utilizzano il paradigma Object
Oriented con definizione e gestione di tipi astratti come class,
actor… ad ogni tipo di dato sono associate tutte e solo le
operazioni disponibili per elaborare gli oggetti di quel tipo. (Non e’
che un’ estensione dell’ idea gia’ implementata in alcuni linguaggi di
programmazione come il Pascal, dove al tipo intero sono associate le
operazioni dell’ aritmetica intera, ed al tipo float quelle dell’ aritmetica non
intera!)
Le operazioni piu’ comuni sulle strutture informative, anche
aggregate (o tra loro o in array o in file), sono le seguenti:
1. Accesso al singolo elemento o nodo della struttura per
interrogazioni e/o per aggiornamenti;
2. Inserzione di un nuovo nodo;
3. Cancellazione di un nodo;
4. Ricerca di un nodo di data chiave=campo identificatore;
5. Ordinamento dei nodi;
6. Copiatura dei nodi;
7. Fusione (merging) di 2 o + strutture informative;
8. Suddivisione di una struttura informativa in 2 o + strutture
informative.
 L’operazione 2 inserendo i nodi costruisce la struttura
informativa. L’ inserimento puo’ essere fatto con diversi criteri
costruttivi, per esempio lineare per una lista lineare dove i nodi
si inseriscono uno dopo l' altro o gerarchico per gli alberi dove i
nodi ai livelli piu’ alti possono risultare privilegiati (come per la
ricerca di un nodo di data chiave cfr.+ 2003p4).
 Facilita’ di inserimenti e cancellazioni in liste e alberi: basta
“aggiornare” 2 indirizzi, ma per la lista c’e’ un unico tipo di
accesso e ricerca di un elemento: sequenziale ! SEGUE che:
 l’operazione 4 risulta “penalizzata” in una lista lineare. Si
deduce che la lista lineare e’ valida per elaborazioni sull’ intera
struttura (come la 6 = Copiatura). Per ricerche: necessita’ di un
altro modello !! a meno di un numero limitato di nodi (100).
9
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
In generale per scegliere la struttura informativa da adottare
si usa come parametro di valutazione P = lunghezza di
ricerca media di un nodo della struttura (pari al numero medio di
nodi attraversati per raggiungere quello cercato).
In lista lineare di n nodi: P = O(n)
“ albero: P = O(h) con h = altezza dell’ albero.
La differenza e’ dovuta al criterio costruttivo che negli
alberi puo’ produrre un cammino di ricerca che non
attraversi tutti i nodi, ma solo alcuni, in media un numero
pari all’altezza dell’ albero.
… occorre diminuire l’ altezza dell’ albero e renderla
una funzione logaritmica di n come si vedra’ in db2003p4.
In Memoria centrale comunque la lista e’ una struttura valida per
elaborazioni globali dell’ oggetto che rappresenta (es. perimetro
di una figura di n vertici da copiare sul video), l’ albero (binario in
Memoria centrale, a n rami su disco) e’ da preferire per ricerche
di un nodo, specialmente se il Numero Totale di nodi supera il
centinaio.
fornisce l’ indicazione della complessita’ della struttura
legata alla complessita’ degli algoritmi che l’utilizzano.
P
I dati devono avere strutture adeguate per essere memorizzati e gestiti
efficientemente, come indica il titolo del testo di N. Wirth (Prentice-Hall):
Algorithms + Data Structures = Programs.)
Tutte queste considerazioni devono essere “implementate”
nei DBMS per facilitare le 8 operazioni viste sulle strutture
informative usate  i DBMS devono mettere a
disposizione degli utenti strumenti validi ossia realizzati
con algoritmi efficienti. Tipico strumento sempre presente
ed usato in ogni DBMS e’ il SORT per l’ordinamento di
una struttura: la sua complessita’ verra’ quindi discussa in
ambito generale.
10
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
COMPLESSITA' DI PROBLEMI, DI ALGORITMI E
DI PROGRAMMI (richiami)
Relativamente ai problemi decidibili interessa la COMPLESSITA'
computazionale indicata nel seguito (in una semplice impostazione
intuitiva) semplicemente come COMPLESSITA':
Dato un problema X con specifica S
per risolverlo, si possono trovare N algoritmi A
e M programmi P
La COMPLESSITA' di un problema, con delimitazioni inferiore e
superiore, si puo’ collegare alla COMPLESSITA' degli algoritmi (e
programmi) risolutivi: per definirla si usa un modello di “costo” di
programmi e algoritmi che si precisa nel seguito. Intanto:
efficienza di A (= complessita’ computazionale):
indipendente dall’ elaboratore
efficienza di P: dipendente dall’ elaboratore.
e : EFFICIENZA DEL PROGRAMMA P
dipende da:
 efficienza del relativo algoritmo (che e’ quindi interessante!)
 spazio di memoria S
 tempo di calcolo T (legato a quello di ogni istruzione)
 efficienza del software di sistema (traduttore, supporto runtime,…)
e = e (S,T)
Per programmi funzionalmente equivalenti generalmente risulta:
S1 > S2  T1 < T2
(tipico esempio: packed array)
Quando S e’ noto e/o costante
e = e (T)
fornisce una misura del “running time” t di P.
11
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Per misurare l' efficienza ossia il COSTO di un programma si considera il
suo "running time" t che in ipotesi semplificative dipende da:
 n: dimensione dei dati;
 v: valore dei dati (alcuni valori innescano cicli?)
 t= funz(n,v) ......
ma un programma e' fatto di istruzioni e comprende m classi di istruzioni
(rispetto ai Cicli di CPU usati) con:
_ni istruzioni della classe i (comunque dipendenti da n e v )
_t i tempo medio di esecuzione di 1 istruz. della classe i
m
t (n) =
 (n i t i)
i =1
Piu' interessante e' C = Complessita' (Costo) DI ALGORITMO !
Ipotesi semplificative:
 C = c (t)
(solo dipendenza temporale);
 i costi delle istruzioni semplici (assegnazione, lettura/scrittura,
confronto) sono tutti uguali e posti = 1;
 i costi delle istruzioni composte sono = SOMMA dei costi delle
istruzioni semplici o numero delle volte che viene eseguita l’
istruzione “dominante”: (spesso si usa il concetto di istruzione
“dominante” avente frequenza maggiore delle altre e proporzionale al
costo dell’ algoritmo -per es. il confronto nel problema del sort-)
 costo = numero di istruzioni da eseguire che e' funzione dell' insieme
{I} dei dati in ingresso;
 n: dimensione dei dati che caratterizza {I}.
In queste ipotesi il "running time" t (e quindi C ) si puo’ esprimere con:
t (n) = a + b f(n)
forma binomiale data da:
 una parte costante a; (inizializzazione)
 "
" dipendente da n (il ciclo, la scansione …) tramite la funzione
Costo f (detta funzione di complessita') che attiene al tipo di
elaborazione ( scansione lineare ? ciclo al quadrato ? …), e un fattore
= “tempo di esecuzione b” costante per ogni unita' di dato.
Interessa soprattutto valutare il
Costo per n ELEVATO = COSTO ASINTOTICO  lim t(n)
n

e NEL CASO PEGGIORE (meno spesso nei casi migliore e medio!)
12
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
COMPLESSITA' DI PROBLEMI, DI ALGORITMI E
PROGRAMMI
COMPLESSITA' DI PROBLEMI:
delimitazioni: inferiore (intrinseca)
e superiore legata al
Costo degli algoritmi risolutivi
Esempio del SORT: n log2n
n2
COSTO = Funzione che utilizza un modello dipendente (solo
asintoticamente ed a meno di costanti
moltiplicative) dal numero delle istruzioni
necessarie ad arrivare nel caso peggiore
al risultato finale per un volume di dati pari a n.
Il numero delle istruzioni necessarie puo’
essere sostituito da quello che indica quante
volte viene eseguita l’istruzione dominante con
frequenza > delle altre e proporzionale al
costo dell’ algoritmo.
… ma quali sono le possibili Funzioni ?
Funzioni f(n)
logaritmiche:
log2 n
(n log2 n)
polinomiali:
ni
esponenziali:
in
…
(per es. 2n)
la complessià esponenziale E’ "NON trattabile"
13
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
COMPLESSITA': DELIMITAZIONE SUPERIORE
Definizione
Un algoritmo ha complessita’ (superiore, ma spesso l’
aggettivo e’ omesso) O( f(n) ) se
nel caso peggiore ha un costo
costo < a + b f(n)
(sono note le risorse sufficienti per es. S)
f(n) delimita superiormente il costo
- interessa f(n) minima
es. 1) Complessita’ algoritmo Quick_Sort:
caso peggiore f(n) = n2
Un problema ha complessita’ (superiore) O(f(n)) se
almeno uno degli algoritmi risolutivi ha costo a + b f(n)
es. 2)
Problema del Sort: tanti algoritmi risolutivi:
Bubble sort;
sort selection;
Quick_Sort …
per questi nel caso peggiore f(n) = n2
la complessita’ superiore = O(n2)
… anche se per l’ algoritmo di Heap_sort nel caso
peggiore: f(n) = n log2 n
14
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
COMPLESSITA': DELIMITAZIONE INFERIORE
Definizione
Un algoritmo ha almeno complessita’ ( g(n) ) se
nel caso migliore ha un costo
costo  c g(n)
(sono note le risorse necessarie )
g(n) delimita inferiormente il costo
- interessa g(n) massima
es. 1) Complessita’ algoritmo Quick_Sort:
caso migliore g(n) = n log2 n
Un problema ha complessita’ inferiore (g(n)) se
tutti gli algoritmi hanno costo almeno g(n)
es. 2) Problema del Sort: tanti algoritmi risolutivi:
Bubble sort;
sort selection;
Quick_Sort …
per tutti questi algoritmi nel caso peggiore f(n) = n2
nel caso migliore g(n)  n log2 n
la complessita’ superiore = O(n2)
la complessita’ inferiore =  (n log2 n)
NON ESISTE un algoritmo risolutivo con
COMPLESSITA’ < n log2 n
PER tutti  e’ la complessita’ “intrinseca” del problema.
15
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
La complessita’ minimale del problema e’ detta intrinseca.
Se per un problema la complessita’ di un algoritmo
risolutivo coincide con la complessita’ intrinseca del
problema l’ algoritmo e’ ottimale. (Per es. l’ heap sort).
Piu’ formalmente un algoritmo A che risolve il problema P
si dice ottimale se:
 l’ algoritmo A risolve il problema P con un costo
O(g(n));
 la complessita’ del problema P ha una delimitazione
inferiore (g(n)).
Trovare la complessita’ intrinseca e’ un problema
matematico.
Come esempio di Complessita' intrinseca si esamina il
problema del SORT e la sua Complessita' intrinseca
considerando 
 il problema matematico,
 la sua soluzione,
 l’ albero di decisione.
16
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
ES. del SORT: dovendo ordinare n elementi vale il
seguente risultato matematico:
IL NUMERO DI CONFRONTI NECESSARIO E’
ALMENO log2n!
(Perche? n! esprime tutti i possibili ordinamenti tra gli n elementi confrontati a 2 a 2)
MA log2n! si puo’ cosi’ trattare:
 n!  n(n-1)(n-2)…(n/2)  (n/2) (n/2)
 log2n!  log2 (n/2) (n/2)= n/2 log2 (n/2)  n/2 log2 n =
= n/2 log2 n(1/2) = n/4 log2 n .
purche’ risulti n  4.
(Perche’? Se n  4 risulta: n/2  n )
Quindi a meno della costante 4 la delimitazione inferiore
del SORT e’  (n log2 n).
Per rappresentare i confronti e i possibili ordinamenti di n=3 variabili a,b,c,
si puo’ considerare un “albero di decisione” ossia un modello di albero
binario esteso (cfr. db2003p4) cosi’ fatto:
Nell’ albero binario esteso ci sono 2 tipi di nodi:
ab?
si /
intermedi e terminali (con i caratteri in corsivo). I
\ no
b  c?
si /
abc
nodi intermedi e la radice contengono un confronto, gli
ac?
\ no
si /
\ no
ac? b<ac
si /
acb
\ no
c<ab
altri un possibile ordinamento ottenuto sul
si /
cammino relativo a ciascuno di essi.
bc?
bc<a
\ no
L’ insieme dei cammini (=3!)
individua tutti i possibili
c<b<a
ordinamenti, mentre il cammino
+lungo individua h (= altezza dell’ albero di decisione) che risulta hlog2n!  L’
albero di decisione con n=3, fornisce la rappresentazione del significato di log2n!
(=lunghezza del cammino).
17
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Considerazioni riepilogative.
COMPLESSITA' DI PROBLEMI decidibili: correlata alla
COMPLESSITA' degli algoritmi risolutivi;
COMPLESSITA' algoritmo  t(n) = a + b f(n)
con f funzione lineare quadratica, logaritmica …
esponenziale (differenza notevole!! cfr. tabella Funzioni)
ed n dimensione dell’ input.
Semplicita’
Complessita’
Attributo richiesto
agli algoritmi per:
facilita’ di comprensione,
verifica di correttezza,
facilita’ di correzione,
…
Efficienza
Attributo richiesto agli
algoritmi per esecuzioni
+veloci; comporta:
rappresentazioni e
procedimenti +razionali,
+sofisticati
Costo umano minore
Importante se dimensione
input limitata (n < 30)
ed inoltre se frequenza di
esecuzione bassa.
Costo macchina minore
18
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Per completare l’esempio del SORT si illustrano ora alcuni metodi e ALGORITMI
DI ORDINAMENTO che sono di TIPO diverso secondo le dimensioni dell’ insieme
da ordinare e riguardano:
 costruzione array ordinato in C.M. dall'inizio &
riordinamento in C.M. degli elementi di un array: detti di SORT interno;
 riordinamento elementi di un file sequenziale detto di SORT esterno.
Terminologia:
SPESSO ARRAY E FILE SONO INDICATI COME LISTE (O SEQUENZE),
SEQUENZA ORDINATA DI ELEMENTI COME "RUN".
IMPORTANTI al fine DI VALUTARE LA COMPLESSITA' dell’ ALGORITMO:
#passi e #confronti (C) ; memoria occupata(S);
#scambi (M=movimenti).
In C.M operazione DOMINANTE. = CONFRONTO, operaz. +pesante = SCAMBIO
Pardigma spesso usato: DIVIDE ET IMPERA (Divide and Conquer cfr. appunti a
mano 1 pagina da R.Kruse)
METODI (Algoritmi) DI ORDINAMENTO
E ELEMENTI DI TIPO:
_ semplice e ordinabile (interi, caratteri, stringhe);
_strutture con campo "chiave" (=identificatore del record) ordinabile +altri campi
1) selezione (per minimi successivi)
2
complessita’ = O(n )
2) scambi (bubble sort)
2
complessita’ = O(n )
3) inserzione
2
complessita’ = O(n )
4) ad albero: doppio indice (quicksort)
heap-sort
5) distribuzione e fusione
Tutti metodi applicabili a array; metodo 5 anche e SOPRATTUTTO per file.
SCELTA DEL METODO
cardinalita’ della lista e suo ordine parziale
dimensione della memoria
dimensione campo chiave
19
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
4
ORDINAMENTO CON DOPPIO INDICE
(quicksort)
1) effettuare spostamenti in array in modo da ripartirlo in due parti
sinistra (ps) e destra (ds) che, rispetto a X (elemento di separazione), siano:
elementi ps  X  elementi ds
2) ripetere per ps e ds ricorsivamente fino all'ordinamento completo
ALGORITMO DI SEPARAZIONE
_ si sceglie un valore della lista (p.e. l'ultimo) come elemento di separazione X
_ si cerca da sinistra il primo elemen. > X e lo si sposta a destra di X se c' e’ un
elem.
_ si cerca da destra il primo elemen. < X e lo si sposta a sinistra di X se c' e’ un el.
_ si prosegue da sinistra e da destra per gli elementi successivi
finche’‚ la ricerca di sinistra non si "incrocia" con quella di destra
ESEMPIO ALGORITMO SEPARAZIONE
9
s
0
0
1
1
s
1
6
4
LISTA SIN.
5
8
2
X
7
LIS. DESTRA
3
0
d
6
1ø riordinamento
4
5
8
2
7
3
d
2ø riordinamento
6
4
5
3
2
7
8
d
s
s e d si "incrociano": separaz. Finita
9
9
COMPLESSITA' QUICKSORT
2
caso peggiore:
n
“ medio:
n log2 n
non richiede extra memoria
20
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
ANALISI QUICKSORT: att.ne allo sbilanciamento!!
Dopo la scelta casuale dell’ elemento di separazione X
(perno) per una lista di N termini si eseguono n confronti,
ma nel caso medio quanti sono gli scambi ?
Se si assume che i termini siano numerati da 1 a N la
rappresentazione della lista finale ordinata e’ la seguente:
Termini < X
|X|
Termini >X
con:
numero dei Termini < X = X-1;
e
numero dei Termini X (compreso X) = N-X+1;
La valutazione del numero presunto di scambi M1,
necessario per arrivare a tale situazione, si puo’ descrivere
elementarmente nel modo seguente:
1. M1 e’ funzione della probabilita’ pertinente ad ogni
termine a sinistra di X di essere stato scambiato e quindi:
M1 = f (prob. (scambio xi con xi< X) *(X-1));
2. si e’ verificato lo scambio se: xi< X ed inoltre
xi era a destra di X;
3. il termine scambiato con xi e’ finito a destra di X tra gli
N-X+1 termini X;
4. dunque al+ potranno esserci stati N-X+1 scambi (=n.o di
casi favorevoli per gli scambi);
5. il risultato e’: prob. (scambio xi con xi< X)= ( N-X+1)/N;
N
6. M1= 1/N
 (N-X+1)*(X-1)/N = N/6 –1/(6*N) = O(N)
X=1
SE nel caso fortunato (liste sempre divise a meta’) il n.odi
passi = log2N si ottiene M = O(N log2N).
21
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
DEFINIZIONE HEAP (Wirth pag.72 e seg.)
Si definisce heap una sequenza di chiavi hl, hl+1, hl+2 … hr
con: l e r interi, l < r e tali che per i = l, l+1,…r/2 soddisfino
alle seguenti condizioni (a): hi< h2*i; hi< h2*i+1;
allora se l=1 risulta: h1< h2; h1< h3;
h2< h4; h2< h5; … etc.
e quindi h1= min(h1, h2, h3 … hr)
La situazione si puo’ rappresentare con un albero binario
memorizzato come un array in locazioni di memoria consecutive
dalla 1 alla r
h1
/
h2
/
h4
\
h3
\
/
\
h5
h6 h7
/ \ / \ / \ / \
h8 h9 ……. etc. …. h15
…………… etc. …..
Segue che gli alberi a torneo costruiti per l’ ordinamento di una
sequenza di termini in modo simile a quelli tipici dei tornei
sportivi (in cui tra le squadre che si affrontano a 2 a 2 sale alla
finale solo la squadra vittoriosa sulle sue avversarie) sono heap in
quanto verificano le condizioni (a).
Quindi trasformare una sequenza in un heap da cui si estrae
la radice puo’ dare un algoritmo di sort efficiente. L’
efficienza si deduce dall’ analisi: l’ algoritmo di Floyd (1964)
lavora “in loco” (memoria richiesta in + quasi nulla) ed il numero
di scambi necessari per l’ ordinamento finale risulta Mmedio = N/2
log2 N.
22
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
L’ algoritmo di Floyd (Heap-Sort) si basa su 2 idee:
1.
ogni sequenza di n termini dalla meta’+1 in su e’ un heap:
impossibile confutarlo! Es. data una sequenza di 8 termini:
6
72
12
55
94
18
44
67
hn/2+1 hn/2+2 … hn
non esiste il termine di indice 2*( n/2+1).
Si puo’ allora estendere l’heap ai termini della prima mezza
sequenza con n/2 passi e log2 n/2 confronti con eventuali scambi
“in loco”. Cio’ si realizza con un ciclo su i che, inizializzato a
n/2 viene decrementato di 1 ad ogni passo: in ogni passo e’
attivata una procedura sift(i,n) che ripete le seguenti operazioni:
 posto h=2i, fintantoche’ risulta h n:
 e’ scelto il minore tra i termini di indice h e h+1 (se ci sono
entrambi ! se no, e’ posto il minore = termine hesimo);
 confronto tra questo minore e il termine di indice i;
 eventuale scambio e posizionamento di i=h (o h+1) e h=2i.
Dopo l’estensione la seq. dell’ esempio diventa:
6 55 12 67 94 18 44 72
2. Costruito cosi’ l’heap si estrae la radice (primo
classificato) e si scambia con il termine al posto n: l’
ordinamento totale si ottiene in n-1 passi, attivando ancora la
procedura sift(1,n-k) con k=1,2...n-1. Al passo k si ottiene nel
primo posto una nuova radice con:
numero di scambi  log2(n-k). Poi la radice si scambia col
termine di posto n-k e si prosegue.
Con n-1 passi, il numero di scambi necessario per
l’ordinamento totale risulta:
M= log2 n/2 + log2(n-1) + log2(n-2) + ...+1  nlog2(n-1)
e in media: Mmedio = n/2 log2 n.
23
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
COMPLESSITA' - CONFRONTI
METODO
#operaz.
selezione
n(n-1)/2
O(n )
per scambi
n(n-1)/4
O(n )
inserzione
n /2
O(n )
quick(caso medio)
heap-sort
n log2 n
"
O(n log2 n)
"
distrib./fus.
n log2 n
O(n log2 n)
5
2
Complessita’
2
2
2
Ordinamento con metodo distribuzione & fusione
liste di qualsiasi dimensione
array o file
tempo ordine n log2 n (complessita')
extramemoria ordine n
24
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
DISTRIBUZIONE E FUSIONE
FUSIONE (merging)
date due liste ordinate L1 L2
produce L3 (= L1  L2 ) ordinata
DISTRIBUZIONE (splitting)
"distribuisce" una lista non ordinata L
in piu’ sottoliste PARZIALMENTE ordinate.
FUSIONE DI 2 ARRAY
v1 + v2 => vf
min(t1v1 , t2v2) ---> vf
SCHEMA DI PROCEDURA
procedure Fusione V
begin
while (v1 e v2 non esauriti) do
if (t1v1 < t2v2 ) then inserisci t1v1 in vf
e avanza su v1;
else inserisci t2v2 in vf e avanza su v2;
end;
if (v1 esaurito) then inserisci residui di v2
in vf;
else inserisci residui di v1
in vf;
end;
25
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
FUSIONE DI 2 FILE: f1 + f2 => ff
stesso algoritmo: invece di avanzare gli indici di array avanzano i puntatori ai file
SCHEMA PROCEDURA FUSIONE FILE
procedure Fusione F (SEMPLIFICATA!!!!)
begin
while (f1 e f2 non esauriti) do
if (t1 < t2 ) then inserisci t1 in ff e avanza su f1;
else inserisci t2 in ff e avanza su f2;
end;
if (f1 esaurito) then inserisci residui di f2 in ff;
else inserisci residui di f1 in ff;
end; (per non SEMPLIFICATA vedere esempio!)
SORT-MERGE “naturale” A 4 FILE AUSILIARI
a
dopo la 1 distribuzione fonde f1 + f2 alternativamente in f3, f4
fonde f3 + f4 alternativamente in f1, f2
e cosi’ via... finche’‚ f1 e f2 (oppure f3 e f4) sono entrambi totalmente
ordinati
fonde f1 + f2 (oppure f3 + f4) in ff
a
elimina distribuzione, ad eccezione della 1
ESEMPIO A 4 FILE di sort-merge “naturale”: si avvale degli ordinamenti naturali
sia in fase di splitting che di merging:
f1
4
3
6
1
8..
ff
4
2
7
3
6
f2
2
7
5
..
..
f3
5
1
..
f4
2
8
3
4
7
1
8
..
..
..
(da distribuire)
5
6
..
MERGE di f3 &f4 su f1 e f2: quindi MERGE FINALE su ff
f1
ff
f2
1
2
3
4
5
6
7
( run ordinato)
2
3
4
5
6
7
8
1
8
..
..
..
..
(run ordinato)
(ordinamento totale)
26
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
TIPI di MERGING
......… ma come si fa a calcolare il numero di passi per arrivare
all’ ordinamento totale ?
Avvalendosi degli ordinamenti naturali imprevedibili si puo’
valutare solo un limite superiore: per questo si usa spesso il sortmerge bilanciato in cui la lunghezza del run si raddoppia ad ogni
passo di merging e quindi il numero di passi diventa: log2 n.
ESEMPIO
1) SEQUENZA DI N=5000 TERMINI DA ORDINARE
E run DI LUNGHEZZA INIZIALE L0 = 1000 TERMINI
(ordinati in C.M.)
Avendo solo 3 file a disposizione (A, B, C) si ha:
il run 1o va su A
Il merge su C produce un 1o run ordinato lungo
2000
il run 2o va su B
“ “ 3o “ “ A
Il merge su C produce un 2o run ordinato lungo
2000
“ “ 4o “ “ B
“ “ 5o “ “ A
Su C va un 3o run ordinato lungo 1000 (la coda)
La distribuzione successiva di C su A e B produce:
il run 1o va su A
Il merge su C produce un 1o run ordinato lungo
4000
il run 2o va su B
“ “ 3o “ “ A
Su C va un 2o run ordinato lungo 1000 (la coda)
La distribuzione successiva di C su A e B produce:
il run 1o va su A
Il merge su C produce solo 1 run ordinato lungo
5000
il run 2o va su B
PER L' ORDINAMENTO FINALE e’ necesario un numero
di passi npassi= log2 N/ L0
27
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Per ridurre il numero di passi DUE Problemi:
1. Numero file ausiliari (quanti ?) di cui 1solo per il merge
2. ELIMINARE le fasi di distribuzione (copiatura)
1.ORDINAMENTO FILE - USO DI MEMORIA (per
ridurre file ausiliari … ma non e’ +tanto attuale )
- ordinamento parziale di f (=file) in memoria centrale
- ampiezza memoria disponibile: M
f = n blocchi S1,S2 ... Sn di dimensione  M;
Si M , ordinamento in M, M  fi(esimo file usato)
fusione f1,f2,...fn  f
I blocchi si possono trasferire a gruppi. Si avranno m
gruppi composti da p blocchi con p = n/m.
f = n blocchi
n blocchi = m gruppi di p blocchi ciascuno
(ESEMPIO n=40, m=8, p=5)
Si  M e ordinamento  fi (i= 1...p) (uso di p file)
fusione f1...fp  g1 (1 file per il merge)
Sp+i M e ordinamento  fi (i= 1...p) “ “ “ “
fusione f1...fp  g2 (1 file per il merge)
........
fusione f1...fp  gm “ “ “ “ “
fusione g1...gm  f (MERGE FINALE)
… aumentando il numero p di file diminuisce il numero di
passi necessario PER L' ORDINAMENTO FINALE e
risulta: npassi= logm (n blocchi)
Si noti: qui l’ accento non e’ posto sul numero di confronti
o scambi (da eseguire in C.M.), ma sul numero di passi
perche’ trattandosi di SORT esterno l’ operazione +pesante
riguarda l’ uso di memoria di massa .
28
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
2. ELIMINARE le fasi di distribuzione (copiatura, split):
Sort in polifase e Algoritmo di GILSTAD (1964)
… ma avendo 3 soli file occorre sempre fare splitting su 2 e
merging su 1 ??
Tutto dipende dalla distribuzione iniziale dei run: con una
distribuzione particolare si puo’ evitare la fase di split
(distribuzione, copiatura) che non produce alcun incremento all’
ordinamento totale.
Una distribuzione particolare che permette di arrivare al merge
finale senza bisogno di splitting intermedi (in quanto si propaga)
si ottiene usando per 3 file la sequenza dei numeri di
Fibonacci (che lega 3 numeri) applicata al numero dei run
sui 3 file.
Fib (n) = 0, 1, 1, 2, 3, 5, 8, 13, 21 …
Es. partendo con 13 run ordinati questi si possono
distribuire su 2 file secondo la regola:
Fib(7) = Fib(6) + Fib(5)  13 = 8 + 5. Si ottiene:
N.o Tot. F1
F2
F3
Livello=npassi
13
5
8
0 merging (F1, F2)  F3
5
8
0
3
5 “
(F2, F3)  F1
4
5
3
0
2 “
(F1, F3)  F2
3
3
1
2
0 “
(F1, F2)  F3
2
2
0
1
1 “
(F2, F3)  F1
1
1
1
0
0 RISULTATO
0
Se
i file sono m>3 non si usano i numeri di Fibonacci, ma i
numeri ottenuti da Shlegel nel 1894 detti “numeri di Fibonacci di
ordine p”che legano p+2 = m numeri. L’ algoritmo che li usa e’
quello di Gilstad (Wirth pag.105).  Con 6 file e 165 680 100 run in
20 passi si ottiene l’ ordinamento totale! Essendo 2201M e’ evidente il
miglioramento di Gilstad con 6 file.
29
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Deduzioni tratte dall’ analisi degli algoritmi di SORT:
 strutturando i dati in modo diverso si ottengono algoritmi
di complessita’ diversa  dipendenza, legame tra
Complessita’ e Struttura dati usata (nel Sort la struttura
gerarchica –albero binario “ben formato” ossia “bilanciato”
come definito in db2003p4– determina minore complessita’
rispetto alla struttura sequenziale
–array esaminata
sequenzialmente–);
 necessita’ di analizzare i dati e scegliere la struttura
appropriata;
 necessita’ di conoscere i tipi di strutture e la loro
complessita’.
Il problema del SORT e’ stato esaminato proprio perche’ e’
un ESEMPIO tipico dei problemi piu’ antichi affrontati in
informatica e interviene in tanti suoi campi, tipicamente nel d.b.
D.B.
single-user (privato) & multi-users.
single-user: esempio di Date (appunti a mano 1 pagina)
30
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
D.B.
multi-users: per rappresentare le informazioni di interesse
di un Sistema Informativo gestibili da vari utenti.
Sorgono problemi come:
moltiplicando il numero degli utenti si moltiplica il numero
degli archivi ?
l’ utente x puo’ accedere e modificare l’ archivio dell’
utente y?
......
ma chi e’ l’ utente ?
Puo’ essere un processo (programma in esecuzione) che
lavora in modo concorrente con altri; cio’ pone i problemi:
 della consistenza dei dati;
 “
protezione “ “
 degli
accessi concorrenti ai dati (parziale, totale
serializzazione ?)
Soluzione razionale ?
Software adeguato !! D.B.M.S. sempre +complesso!!
Occorre un sistema di gestione automatica … ma di cosa?
NON di archivi tradizionali, ma di informazioni di
interesse fondamentale, strutturate in modo appropriato,
da mantenere consistenti tra loro permettendone o
vietandone l’ accesso.
31
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
DEFINIZIONE di d.b. e sue caratteristiche:
insieme di dati fondamentali (organizzati in archivi),
 di interesse per il Sistema Informativo (in cui il d.b. deve
essere introdotto)
 che possono avere grandi dimensioni;
 “ “
simultanei;
essere condivisi tra +utenti anche con accessi
 devono essere affidabili, consistenti tra loro, persistenti,
non ridondanti: per questo sono necessarie procedure di
salvataggio e ripristino (backup & recovery) in caso di
malfunzionamento;
 devono rispondere a requisiti di privatezza (si usano
meccanismi di controllo che salvaguardino da azioni non
autorizzate), di efficienza (complessita’ procedurale
minima), di efficacia (rendimento produttivo ottimale per le
attivita’ degli utenti). Es. processo di traduzione automatica:
l’ algoritmo di ricerca vocaboli corrispondenti deve lavorare
in sintonia con l’ Analizzatore sintattico-semantico di frase.
Obiettivo primario (virtuale): una modifica nell’ ambiente da
automatizzare deve produrre una modifica nel d.b.
Obiettivo sperimentato raggiungibile con un buon progetto:
una modifica nell’ ambiente da automatizzare non deve
propagarsi in un numero incontrollato di modifiche del d.b.
ESSENZIALE un’ attivita’ di progettazione ben fatta !!
32
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Esempio di problemi di correlazione di archivi:
in una piccola societa’ di vendita per corrispondenza
convivono 3 Uffici: Contabilita’ Clienti; Controllo Magazzino,
Ufficio Personale. Con l’ impostazione tradizionale ciascun
Ufficio aveva il suo Archivio con i relativi programmi di
gestione, come indicato nello schema:
Prg. Fatturazione
Archivio Clienti &
Fatture
Prg. Gest.
Magazzino
Archivio Ordini &
Scorte
Prg. Gest. Stipendi
Archivio Dipendenti
Problema: correlare i 3 Archivi per realizzare “incroci” (per es.
un prospetto dei Dipendenti di eta’ > 40 che hanno eseguito
meno di 1000 Fatture/Anno). Nell’ impostazione tradizionale il
problema non e’ facile da risolvere, mentre lo e’ nell’
impostazione d.b. essendoci integrazione, collegamenti tra i
dati. Un modello di collegamento e’:
Fattura
Dipendente
Cliente
Cliente
Fattura
Ordine
Ordini/Scorte
Quanti e quali collegamenti
sono necessari ?
Dipendente
33
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
DBMS= Data Base Management Systems: sistema software per
gestire archivi di notevole dimensioni, persistenti, condivisibili.
Presenta una Organizzazione logica dei dati (interessante per
l' utente) che si basa su una organizzazione fisica degli archivi
dipendente dalla “distribuzione” di questi. L'Organizzazione
logica dei dati segue un modello dei dati che "e' un insieme di
concetti per organizzare i dati e descriverne la struttura". Si
dispone cosi' di meccanismi di strutturazione dei dati analoghi
ai costruttori di tipo dei linguaggi di programmazione (p.es. la
struct del C). La strutturazione segue il modello logico dei dati
disponibile nel DBMS usato (aggettivo logico -non illogicosottolinea la caratteristica sostanziale del modello che contiene
una sua organizzazione per es. gerarchica, tabellare...) I
modelli tradizionali sono: gerarchico, reticolare, RELAZIONALE
(piu' diffuso). Estensione a questo modello sono le basi di dati
ATTIVE (con possibilita’ di innescare procedimenti in reazione a dati
eventi: paradigma Evento Condizione Azione ECA) e dalla fine degli
anni 80 le basi di dati ad oggetti che utilizzano il paradigma O.O.
integrandolo nel modello relazionale (o viceversa). Di queste ultime si
accennera’ alla fine della terza parte (il paradigma Object Oriented si
presume noto); per le basi di dati attive e’ invece importante indicare
subito che esse permettono di realizzare un terzo tipo di indipendenza
oltre all’ indipendenza “fisica” e “logica” dei dati (indipendenza dalla
loro posizione e rappresentazione): indipendenza dalla conoscenza.
Un tipo di conoscenza rappresentata per es. da regole aziendali (di tipo
comportamentale come SE RUBI TI SPEZZO), viene codificata in trigger
(reazioni o regole attive) che si innescano al verificarsi degli eventi e
delle condizioni che contengono. I trigger sono condivisi dalle
applicazioni e la conoscenza cosi’ non deve essere replicata in ogni
applicazione.
34
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Il modello gerarchico (nato negli anni '60) ha strutture ad
albero;
quello reticolare o CODASYL (da Conference on Data
Systems Languages, l' organizzazione che ne propose i
fondamenti negli anni '70) ha strutture di tipo semplici grafi,
reticolari;
quello relazionale con il costruttore “relation” ossia relazione
intuitivamente rappresentata in forma tabellare (ideato da E.F.
Codd e presentato in un articolo del CACM del Giugno 1970
...) e’ il piu' importante.
Questi sono modelli usati nei DBMS.
A questi si aggiungono altri modelli, detti spesso concettuali,
per descrivere i dati indipendentemente dal tipo di DBMS tesi a
descrivere i concetti dell' ambiente da automatizzare.
Tipico esempio e' il modello Entity- Relationship usato per la
progettazione di un d.b. (cfr. db2003p3)
35
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
DB & DBMS: dove si usano principalmente?
in quale contesto si inseriscono?
Generalmente il contesto e' un Sistema Informativo.
Sistema Informativo = Insieme organizzato di Risorse e Procedure di
natura diversa (umana e materiale) che interagiscono tra loro,
FINALIZZATO alla GESTIONE dell' INFORMAZIONE in un’
azienda.
(GESTIONE dell' INFORMAZIONE = raccolta, registrazione,
trasmissione, elaborazione dell' INFO.)
Sistema Informatico = anche se ormai il termine e' sostituito da
Sistema Informativo, e' visto come un sottoinsieme del Sistema
Informativo FINALIZZATO alla GESTIONE AUTOMATICA dell'
INFORMAZIONE sintetizzata in dati mediante processi di
modellizzazione (aggregazione, astrazione).
Progetto di un Sistema Informatico: 3 fasi.
1) Analisi: raccolta e definizione requisiti;
2) progettazione: specifiche di progetto;
3) realizzazione con progetto logico e fisico.
Nella fase 3 "entra in gioco" l' ambiente di Gestione (Archiviazione)
dei dati con l' utilizzo di un Sistema di Gestione di Basi di Dati
(S.G.B.D. = D.B.M.S.) apposito (Commerciale o Artigianale) e le sue
regole da seguire. Occorre sottolineare che tali regole possono
cambiare quando si passa da un ambiente centralizzato ad un
ambiente che si vuole utilizzare anche dall’ esterno per es. con uso di
Internet.
Quest’ ultimo argomento verra’ ripreso e sviluppato nella parte 3
(db2003p3).
36
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
+in dettaglio:
Progetto di D.B. di tipo centralizzato e sua introduzione
in un Sistema Informatico.
3 Fasi
1 Analisi:
1. 1 analisi del preesistente ossia del sistema informativo in
uso (automatico o no): struttura, finalita’, funzioni,
attivita’ effettive, interfacce tra aree funzionali con
standardizzazione dei termini, settori e procedure da
automatizzare, possibilita’ e convenienza, dati e loro tipo,
volume, privatezza …
1.2 definizione dei requisiti del sistema informatico.
2 Progettazione
costruzione del progetto di tipo semantico, concettuale del
d.b.
3 Realizzazione
definizione conforme al progetto concettuale del progetto
logico e fisico del d.b. detti anche schema logico e schema
fisico.
37
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Ciclo di vita del software ed esempi
(appunti a mano da riviste ed Albano 1 pagina)
38
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Sintesi della MODELLAZIONE & PROGETTAZIONE di d.b. di
tipo centralizzato.
Informazioni, necessita’
dell’ utente …
concreta
Conoscenza{ implicita
(statica &dinamica)
procedurale
Modellazione:
 astrazione
 aggregazione di concetti dipendenti
Definizione di:
 Tipi Entita’ (sottotipi …)
 “ interrelazioni tra Entita’
 Requisiti
 Condizioni (Vincoli)
 Tipi Attivita’ …
Specifiche di progetto
con utilizzo di un
“Modello di Dati”
Schema logico della
Base di Dati nel
liguaggio disponibile
nel D.B.M.S.
Progetto
Concettuale
Gerarchico, Reticolare
Relazionale: deve
permettere una
descrizione dei “dati”
indipendente dalla
rappresentazione fisica
39
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Schema logico di un d.b.
 descrizione sintetica di tutti i tipi di dati,
delle interrelazzioni o legami tra i
tipi di dati,
dei vincoli tra i tipi di dati.
Puo’ essere realizzato solo dopo APPROFONDITA
ANALISI dell’ ambiente dove il d.b. deve essere inserito.
Con riferimento allo schema logico il D.B.M.S. permette e
controlla accessi e aggiornamenti dei dati.
Un primo esempio di schema logico e’ tratto da “Data
Models” di Tsichritzis-Lochovsky e rappresenta lo schema
relazionale di un “Medical d.b.”
HOSPITAL(Hospital_code, Name, Address, Phone#, # of beds)
WARD(Hospital_code,Ward_code, Name, # of beds)
STAFF(Hospital_code, Ward_code, Employee#, Name, Duty,
Shift, Salary)
DOCTOR(Hospital_code, Doctor#, Name, Speciality)
PATIENT(Registration#, Name, Address, Birthdate, Sex, SSN)
DIAGNOSIS(Registration#, Diagnosis_code, Diagnosis_type,
Complication, Precaution_info)
LAB(Lab#, Name, Address, Phone#)
TEST(Registration#, Lab#, Test_code, Type, Date_ordered,
Time_ordered, Order#, Status)
HOSPITAL_LAB(Hospital_code, Lab#)
ATTENDING_DOCTOR(Doctor#, Registration#)
OCCUPANCY(Hospital_code, Ward_code, Registration#,
Bed#)
Come si arriva a stendere tale schema?
… partendo da uno Schema Concettuale …
40
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Per avere un vero Schema Concettuale occorre usare un Modello
Concettuale dei dati come E-R ( Entity - Relathionship Model, cfr.
parte 3): quello che segue e’ solo un primo abbozzo di schema
concettuale:
Hospital
Name Address
Hospital_Code
# of beds
Phone#
……
N
Doctor
Patient
M
(Hospital_Code, Doctor#)
Name
Speciality
Registration#,
Name, Address,
Birthdate,
Sex, SSnN
…..
Ogni Entita’ dell’ ambiente da automatizzare (come Hospital o
Doctor o Patient o … altro) e’ racchiusa in un rettangolo ed e’
collegata ai suoi attributi con simboli di tipo diverso. Qui si ha:
per la chiave;
per altri attributi come il Name: ogni
Entita’ ha un solo nome che pero’ puo’ essere proprio di altre
Entita’;
per quell’ attributo che ogni entita’ ha con una certa
molteplicita’ e puo’ essere proprio di altre entita’ (come Speciality
per Doctor). Le Entita’ possono essere anche collegate tra loro con
simboli simili: per es. Doctor e Patient sono collegati con
indicando
che un Doctor cura M Patient ed un Patient ricorre a M Doctor.
41
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Fasi di progettazione di una Base di dati con
riferimento ad una Base di dati ospedaliera (Medical d.b.):
progetto concettuale, progetto logico, progetto fisico
Come ottenerli?
1. Progettazione concettuale: usa un modello
concettuale dei dati che permette la
descrizione
dei dati col loro significato
informativo ad un
livello di astrazione alto  prodotto: schema
concettuale;
2. Progettazione
logica:
traduce
lo
schema
concettuale nelle strutture tipiche del D.B.M.S. a
disposizione (per es. relazioni del modello
relazionale)  prodotto: schema logico la cui
qualita' e' verificabile e migliorabile tramite tecniche
formali disponibili col D.B.M.S. a disposizione (per
es. la normalizzazione);
3. Progettazione fisica: specifica i parametri fisici non
menzionati nello schema logico, ma necessari per
memorizzare i dati  prodotto: schema fisico.
cfr. Atzeni & C. "basi di dati" pag. 165 e seg.
Nella fase 2) il modello (le strutture) dei dati utilizzato per
la descrizione dello schema logico deve soddisfare ad un
requisito base: indipendenza dalla rappresentazione fisica dei
dati  garanzia che ogni modifica nello schema fisico non
comporti alcuna modifica nello schema logico e quindi neppure
sulle procedure che lo usano  indipendenza fisica dei dati. Nei
modelli gerarchico e reticolare (non relazionale) il progetto logico
contiene elementi di rappresentazione fisica (per es. puntatori ...)
42
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Col modello relazionale (Codd 1970) l' indipendenza
fisica dei dati e' ottenuta con una rappresentazione
tabellare dei file indipendente dalla loro
rappresentazione fisica (sequenziale, indicizzata ...)
E' necessaria pero' anche l' indipendenza dalla
rappresentazione logica dei dati, ossia dallo schema
logico che e' la descrizione globale di tutto il data
base. Questa necessita' deriva dal fatto che quando il
numero di utenti risulta >1 ogni utente puo' avere
interessi distinti e riferirsi solo a parti del d.b. 
_ l' utente deve poter disporre di un suo
sottoschema logico o "vista d' utente" che resti
invariato da modifiche nello schema logico
_ si ottengono due livelli di schema logico (Schema
e View) ed un livello di schema fisico che danno l'
indipendenza fisica e logica dei dati.
Quindi indipendentemente dal modello occorre
conoscere sia la struttura, l’architettura Standard
di un Sistema di Gestione di Basi di Dati =
S.G.B.D. sia la sua composizione per saper cio’ che il
Sistema accettera’ in input e come rispondera’.
43
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Architettura del DBMS di tipo Standard (“centralizzato”):
definita gia’ nel 1975 dal Comitato ANSI/X3/SPARC gruppo di
studio sui DBMS, e’ a 3 livelli di Schema  necessari per
ottenere “Indipendenza Fisica e Logica dei Dati” ed e’:
 Schema Esterno o Sottoschema o View (Vista d’ Utente)
 Schema Logico o Concettuale
 Schema Fisico o interno
Ogni singolo utente puo’ essere interessato ad una sola parte
del d.b. e quindi ha necessita’ di una sua parziale
rappresentazione fornita da uno degli Schemi esterni o Viste d’
utente che contengono solo la parte dei dati di interesse per i
vari utenti. Possono essere costituiti da “sottoinsiemi estesi”
dello Schema (l’ estensione riguarda organizzazioni o
collegamenti differenti). Lo Schema Esterno assicura l’
indipendenza (logica) dalla rappresentazione dei dati.
Lo Schema Logico contiene la descrizione di tutto il d.b. fatta
nel Modello Logico del DBMS ed e’ controllato dal DBA =
persona o staff Amministratore del d.b.
Lo Schema Fisico non e’ che la rappresentazione dello
Schema logico tramite apposite Strutture Fisiche di
memorizzazione: sullo Schema Fisico lavorano i “Sistemisti” (i
programmatori
di
Sistema)
ed
il
DBA.
Esempio in appunti a mano (1pag.) da Melchiorri-Paschetti.
Funzionamento del DBMS Standard: ogni comando (o programma) d’
utente e’ controllato dal DBMS che fa confronti sulle informazioni
richieste e le dichiarazioni del Sottoschema pertinente e dello Schema
logico. Se ci sono discrepanze il comando e’ rigettato, altrimenti e’
eseguito tramite le strutture di Accesso dello Schema fisico ed i Metodi di
Accesso del S.O. o quelli tipici del DBMS stesso (cfr parte 4).
44
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
D.B.M.S. (Data Base Management System)
sistema software per gestire archivi di notevole
dimensioni, persistenti e condivisibili con Funzioni di:
_
Data Definition ( D.D.L.= Data Definition
Language);
(per costruire lo schema)
_
Data Manipulation ( D.M.L. = Data
Manipulation Language); (per elaborazioni …)
_
Data Security & Integrity ;
_
Data Recovery & Concurrency;
_
Data Dictionary: "data about the data" 
data base of the system = METADATI ( in
DB2: Catalog = System's data base (*));
_
Performance;
_
Friendly Interface;
_
...
(*) contiene tutte le informazioni ("descriptors")
relative alle Relazioni, Attributi, Indici, Utenti, Viste,
_ del Sistema Relazionale (cfr. piu' avanti).
Composizione del D.B.M.S. (a grandi linee) 
_
interprete;
_
compilatore, se dotato di un proprio
linguaggio, altrimenti linguaggio e
compilatore ospiti per es. Cobol;
_
ottimizzatore ed esecutore accessi.
45
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Perche' un DBMS ?
Albano Orsini dal confronto tra i sistemi di
Archiviazione e DBMS trae i seguenti benefici:
1. Riduzione Ridondanza con un’ organizzazione
appropriata dei dati;
2. Riduzione degli sforzi di programmazione per
mantenare la consistenza dei dati a causa dell’
integrazione (condivisione) dei dati;
3. Terminologia migliorata con l’ uso di nomi
standard definiti nello Schema Logico;
4. Indipendenza fisica dei dati che diventano
+accessibili;
5. Privacy &Security: la riservatezza dei dati e’
aumentata;
6. Recovery: in caso di malfunzionamento il ripristino
dello stato del d.b. e’ eseguito automaticamente
garantendo affidabilita’ dei dati;
7. Concorrenza ed uso di Reti: i servizi di
trasmissione dati sono spesso favoriti.
Alcuni
DBMS Societa’ S.O.,
Modello
DB2
IBM VSE, Unix,WindowsNT Relazionale
OracleServer Oracle “
“
Windows(2000)
“esteso(*)
Access Microsoft
“
“
Relazionale
IMS
IBM
“
OS/VS, Dos/VS… Gerarchico
IDMS ComputerAssociated VSE, MVS…
Reticolare
e poi System2000, IDS II (Honewell), ADABAS, Total …
(*) esteso nel senso che permette anche l’ uso di Oggetti e reattivita’.
46
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Problema anni 90  sicurezza nelle Basi di Dati
Problema primario: protezione del D.B da accessi impropri.
 Ogni accesso e' controllato dal D.B.M.S. tramite regole
di
Autorizzazione: controlli + duri per d.b. Distribuite
 Complessita' del Controllo Accessi al D.B. >
Complessita' del Controllo Accessi a file del S.O.
Motivi:
1. occorre applicare il controllo a oggetti di
granularita' piu' fine dei file come records,
attributi, valori;
2. Nei data base le informazioni sono associate tra
loro SEMANTICAMENTE: cio' puo' permettere ad un
utente di conoscere il valore di un dato senza accedere
direttamente ad esso, ma inferendolo da altri ...
QUINDI il D.B.M.S. deve soddisfare a richieste di:
_ protezione del D.B. da inferenze;
_ integrita' del D.B. sia fisica che logica (pag. seg.);
_ protezione e trattamento speciale di "sensitive data" (*);
_ vari livelli di protezione (segretezza) (pag. seg.);
_ limitazione nei trasferimenti di info. (pag. seg.).
(*) Es. "sensitive data":
studente
|
Corso
|
Voto
voto = "sensitive data" rispetto a corso: cancellando Corso, Voto non ha
significato e non ha senso conservarlo, ma avendo:
Cliente
se si elimina Cliente si perde anche il suo indirizzo che puo’
|
risultare utile per usi futuri  meglio indicarlo come OLD.
I ndirizzo
47
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Sicurezza nelle B.D. = sicurezza delle informazioni => 3 aspetti
relativi a: Integrita' fisica, Integrita' logica, Segretezza.
Integrita' fisica: impedire distruzioni o modifiche per eventi
accidentali o manomissioni deliberate 
Integrita' fisica: {
_ verifica analitica & conto accessi
(proc. Auditing & accontability tipiche dei S.O.)
_ procedure di Recovery & Restart
Integrita' logica: garantire correttezza e consistenza logica delle
informazioni. Si distingue in: Integrita' operazionale e Integrita'
Semantica. L' Integrita' operazionale e' "garantita" dall' utilizzo di un
LOG o Journal su cui sono registrate tutte le operazioni e gli stati
del d.b. (i valori dei dati!) Se in una data transazione (*) capita un
malfunzionamento il sistema (DBMS) puo' riprendere con lo stato
(i valori dei dati) precedente la transazione. L' Integrita' Semantica
e' "garantita" da controlli sui dati ed uso di vincoli di integrita' nello
SCHEMA. 
_ consistenza dei dati (anche
Integrita' logica & {
durante transazioni concorrenti)
operazionale
_ vincoli di integrita'
Segretezza: impedire letture non autorizzate dei dati. Si distingue in:
riservatezza (se i dati sono di tipo economico-commerciale);
privatezza se i dati sono relativi a persone.
(*) Transazione: sequenza di operazioni sul data-base che trasforma uno
stato del d.b. in un altro (con modifiche sui dati): i 2 stati devono essere
consistenti (non le situazioni intermedie !! Per es. gli studenti che cambiano Facolta’,
durante gli aggiornamenti possono trovarsi in situazioni strane: importante e’ che la
situzione finale sia corretta.) Di transazioni si parlera’ ancora specialmente con i
d.b. di tipo distribuito nella parte 3 (db2003p3).
48
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
L' architettura dei
D.B.M.S. deve arricchirsi
utilizzando:
_ moduli di filtro e regolamentazione accessi;
_ modelli strutturali piu' complessi.
(cfr. appunti a mano 1 pagina da Martella & altri)
49
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Protezione delle info. (contenute in un data base) a livello
logico. Si ottiene con controllo di: flusso, inferenza,
accesso e con controllo crittografico (*) e codifica dei dati
memorizzati impedisce che i dati risultino comprensibili a
chi li legge senza autorizzazione. Il controllo di flusso
regola la distribuzione delle info tra “gli oggetti” (i file, le
relation …) del d.b. accessibili agli utenti. Per es. flusso di
info tra 2 relation X e Y si ha quando un’ istruzione legge
valori da X e li scrive in Y Il controllo di flusso deve
impedire che le info di relation protette fluiscano
esplicitamente (copiate) o implicitamente (trasformate) in
relation o altri oggetti meno protetti e quindi leggibili da
ogni utente. Per impedire flusso indesiderato occorre
specificare quale e’ il flusso ammesso e negare l’
altro. Il controllo di inferenza deve proteggere le info da
una loro scoperta indiretta tramite deduzioni, derivazioni,
computazioni. Tipico esempio l’ inferenza statistica. (Es.
Interrogazione: Frequenza delle persone che hanno modificato il proprio
C.C. in data 2.9.’99 alle ore 12.12.00 ? Risposta: 1; Domanda: nominativi ?
Risposta: NON CONCESSI; Domanda: Residenza delle persone che … ?
Risposta:
Trieste,
via Roma … 
Persona individuabile)
Il controllo di accesso deve sottoporre tutti i soggetti che
accedono al sistema (interrogazioni di utenti, … processi …
con operazioni di lettura, scrittura, esecuzione di lavori) a
controlli regolati dalla politica di accesso (ingiuntiva o
discrezionale) e attivati da meccanismi (filtri) di sicurezza.
************************************************
(*) usato oggi anche in Internet nell’ uso di chiavi
pubbliche, private, firme elettroniche, documenti riservati ...
50
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A. 2003
Cavalli di Troia per d.b. ***************************
Si puo’ trattare generalmante di tipi di programmi a prima
vista utili per effettuare calcoli interessanti (per es. calcoli
statistici), ma contenenti in qualche procedura, codice
nascosto (mascherato) che “legge-scrive”. Situazione tipica
& semplice: l’ utente A abilitato a lavorare sul file FA di un
d.b. anche in scrittura, da’ il permesso all’ utente B (un po’
ingenuo) di lavorare sul file FA anche in scrittura. Se l’
utente B avvia inconsapevelmente un Cavallo di Troia
(nascosto in FA) su uno dei suoi file FB questo sara’ copiato
su FA e … l’ utente A carpira’ le informazioni di B … !!!
Altre situazione tipiche & meno semplici possono capitare
in rete con mail (contenenti codice nascosto che provocano
danni a catena.**********************************
************************************************
Come difendersi ? In sintesi (e nel caso dei d.b.): usando
politiche di protezione di tipo ingiuntivo (mandatory) che
regolano accessi a file ed a processi. Politiche di protezione
che si basano su classificazioni rigide degli utenti del
D.B.M.System: solo ai soggetti (utenti, programmi) abilitati
a lettura/scrittura su tutto il d.b. e’ permesso di usare
qualsiasi processo anche quelli classificati di utilita’.
Modello relazionale: caratteristica essenziale e' che,
come dice Date, “un Sistema Relazionale e' percepito
dall' utente come un insieme di tabelle”... Segue parte
2
51