Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000




A.A.’99-2000

Appunti su data base
di:


Anna Maria Carminelli Gregori

Parte 1
1
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000

Corso di laurea: Ingegneria Elettronica
Indirizzo:
Calcolatori Elettronici
Insegnamento: Basi di Dati
A.A.
1999-2000
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 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:
_ Richiami sul Modello di Calcolo, Complessita’ di Problemi, Algoritmi e Programmi con particolare riferimento al
Problema del Sort e ad alcuni Algoritmi risolutivi di Complessita’ diversa dipendente dalla Struttura di Dati
utilizzata;
_ Basi di Dati, Sistemi di Gestione di Basi di Dati, 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, problemi di sicurezza, integrita’, condivisione e gestione distribuita dei
dati con possibili soluzioni;
Aspetti di implememtazione, architetture centralizzata, client-server, distribuita: 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.
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 come Access e di rete e con l’ obiettivo di realizzare strumenti utili in
ambiente Sanitario.
2
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
basi di dati o data base (d.b.)
 2 aspetti fondamentali:
 progetto e uso
 importante la terminologia
Breve test:
domande
Che cos'e' un d.b.?
Motivazioni ?
risposte
1) un sistema
2) un insieme di archivi integrati 3) software
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.
Che cos'e' un Data Base Management System ?
1) un file 2) data base per S.O.
Che cos'e' un Sistema Informativo?
1) un file di S.O. 2) sistema per gestire file
3) sistema per gestire file
3) il “
“ “
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 dell’ ambiente in cui il d.b. deve essere inserito ossia
un’ analisi del ...
preesistente.
Nell’ analisi occorre valutare anche la complessita’ dei problemi incontrati.
Ecco perche’ occorre parlare di problemi, di algoritmi risolutivi e della loro
complessita’.
3
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Problemi e Funzioni
La risoluzione di un problema puo’ essere sintetizzata come il calcolo di
una funzione che trasforma i Dati in ingresso (dominio della funzione) in
Risultati in uscita (codominio della funzione).
Risultati = f(Dati)
(1)
1a questione: quale modello di calcolo si utilizza ?
Secondo R. Rojas (“Neural Network”) un qualunque modello usato per
calcolare una funzione usa 3 tipi di elementi: dati, comunicazioni,
trasformazioni. Si puo’ quindi sintetizzare con l’ espressione:
calcolo = memoria + trasmissione + elaborazione.
2a questione: la trasformazione (1) e’ sempre possibile ? ossia la funzione e’
sempre calcolabile ?
In teoria della computabilita’ si dimostra l’ esistenza di funzioni NON
calcolabili (Tesi di Church 1936) e di problemi indecidibili. (Esempio
elementare di un problema indecidibile: termine di un programma. Chi e’ in
grado di rispondere al quesito se un certo programma ha termine in un
tempo finito ? NON un altro programma !)
Una funzione e’ calcolabile (il problema risolubile) se esiste un algoritmo
(Al-Khuwarizmi 800 d.C.) che permette di calcolare il valore della funzione
in un tempo finito per ogni valore del suo dominio.
Per i problemi risolubili (DECIDIBILI) e’ necessario lo studio della loro
complessita’. La teoria della complessita’ distingue i problemi come “Buoni
e Cattivi”.
I primi sono i problemi trattabili, intrattabili gli altri. Per i problemi
trattabili l’ algoritmo risolutivo NON impiega un tempo esponenziale
rispetto al numero dei dati, ossia rispetto alla DIMENSIONE dell’ input.
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.
4
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Relativamente ai problemi decidibili:
COMPLESSITA' - impostazione intuitiva
problema X con specifica S
N algoritmi A
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.
efficienza di A (= complessita’ computazionale)
indipendente dall’ elaboratore
efficienza di P dipendente dall’ elaboratore
e : EFFICIENZA DI PROGRAMMA P
dipende da:
efficienza di algoritmo
spazio di memoria S
tempo di calcolo T (dipende da quello di ciascuna istruzione)
efficienza del software di sistema (traduttore, supporto run-time, ....)
e = e (S,T)
per programmi funzionalmente equivalenti generalmente risulta:
S1 > S2 => T1 < T2
Quando S e’ noto e/o costante
e = e (T)
e fornisce una misura del “running time” t di P.
5
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Per misurare l' efficienza ossia il
COSTO DI UN PROGRAMMA
si fa riferimento al suo "running time" t che
in ipotesi semplificative dipende da:
 n: dimensione dei dati;
 v: valore dei dati (alcuni valori innescano cicli?)
quindi
t= funz(n,v) ......
ma un programma e' fatto di istruzioni e comprende
m classi di istruzioni con:
_ni istruzioni della classe i (comunque dipendenti da n e v )
_t i tempo di esecuzione di 1 istruz. della classe i
m
t (n) =
 (n i t i)
i =1
6
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Piu' interessante e'
C = COMPLESSITA' DI ALGORITMO !
Ipotesi semplificative:
- C = c (t)
(solo dipendenza temporale);
- i costi delle istruzioni semplici (assegnazione, lettura/scrittura,
confronto) sono tutti uguali e = 1;
- i costi delle istruzioni composte sono = SOMMA dei costi delle
istruzioni semplici o dell’ istruzione “dominante”;
- (spesso si usa il concetto di istruzione “dominante” avente
frequenza maggiore delle altre (per es. il confronto nel problema
del sort): in tal caso il costo delle istruzioni si ottiene considerando
solo il costo di tale istruzione;)
- 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 (t)) si puo’ esprimere con:
t (n) = a + b f(n)
(2)
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'),
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 -> infinito
NEL
CASO
PEGGIORE
(meno
nei
casi
migliore
e
medio!)
7
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
COMPLESSITA' DI PROBLEMI, DI ALGORITMI E
PROGRAMMI
COMPLESSITA' DI PROBLEMI:
delimitazioni: inferiore (intrinseca)
e superiore legata al
COSTO (algoritmi)
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 dal numero dell’ istruzione
dominante con frequenza > delle altre.
8
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
FUNZIONI f(n)
logaritmiche:
log2 n
(n log2 n)
polinomiali:
ni
esponenziali:
in
e
TABELLA DELLE FUNZIONI (B.Fadini-C.Savy)
(Ipotesi: per n=1: E’ necessario 1 micros. per risult.)
f(n) n= 10
n= 20
n= 30
n= 40
n= 50
n
n
n
n
2
0.00001s 0.00002s
2
3
5
n
0.0001s
0.00003s
0.0004s
0.00004s
0.0009s
n= 60
0.00005s
0.0016s
0.00006s
0.0025s
0.0036s
0.001s
0.008s
0.027s
0.064s
0.125s
0.216s
0.1s
3.2s
24.3s
1.7min
5.2min
13.0min
0.001s
1.0s
17.9min
12.7gg.
35.7anni
366secoli…
… la complessià esponenziale E’ "non trattabile":
con n50 anche se il tempo di ciclo dell’ Elaboratore diventa 1o 2 ordini di
grandezza inferiore .... il numero di anni resta alto.
9
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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
10
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
COMPLESSITA':
DELIMITAZIONE
INFERIORE
Definizione
Un algoritmo ha 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.
11
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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.
12
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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 confronti tra gli n elementi … presi pero’ 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 3 variabili a,b,c, si
puo’ considerare un “albero di decisione” ossia un modello di albero binario
esteso (cfr. db2000p4) cosi’ fatto:
Nell’ albero binario esteso ci sono 2 tipi di nodi:
ab?
si /
intermedi e terminali (foglie con i caratteri in corsivo).
\ no
b  c?
si /
abc
I nodi intermedi e la radice contengono un confronto,
ac?
\ no
si /
\ no
ac? b<ac
si /
acb
\ no
c<ab
le foglie un possibile ordinamento ottenuto sul
si /
cammino dalla radice alla foglia.
bc?
bc<a
\ no
c<b<a
L’ insieme dei cammini radice-foglia (3!) individua tutti i
possibili ordinamenti mentre il
13
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
cammino +lungo individua h
(= altezza dell’ albero di decisione) che risulta hlog2n!  la rappresentazione con
l’ albero di decisione fornisce la verifica della delimitazione inferiore del SORT.
Considerazioni riepilogative.
COMPLESSITA' DI PROBLEMI decidibili: correlata alla
COMPLESSITA' degli algoritmi risolutivi;
COMPLESSITA' algoritmo = t(n)
con t 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
14
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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
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,
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).
OPERAZIONE DOMINANTE = CONFRONTO
Pardigma spesso usato: DIVIDE ET IMPERA (Divide and Conquer R.Kruse
1 pagina)
METODI (Algoritmi) DI ORDINAMENTO
E TIPO ELEMENTI:
_ di tipo ordinato (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
15
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
dimensione campo chiave
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 elemento > X e lo si sposta a destra se c' e’
_ si cerca da destra il primo elemento < X e lo si sposta a sinistra se c'e’
_ 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
procedure quicksort(lista_completa);
begin
ordina(lista_completa)
end;
procedure ordina(lista)
begin
if (lista non degenere) then
begin
separa(lista)
ordina(sottolista_sinistra);
ordina(sottolista_destra);
end;
16
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
end;
procedure quicksort (var a: lista; n: indice);
procedure split (var a:lista; primo, ult: indice);
............
begin
............
end
procedure sort (var a:lista; primo,ult: indice);
............
begin
............
end
begin {quicksort}
sort(a,1,n);
{e’ ricorsiva e chiama split}
end; {quicksort }
COMPLESSITA' QUICKSORT
caso peggiore:
“
medio:
n
2
n log2 n
non richiede extra memoria
17
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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 NX-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)/N * (X-1) = 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).
DEFINIZIONE HEAP (Wirth pag.72 e seg.)
18
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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*1; hi< h2*1+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
h3
/ \
/
\
h4
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.
L’ algoritmo di Floyd (Heap-Sort) si basa su 2 idee:
19
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
1. ogni sequenza di n termini dalla meta’+1 in su e’ un
heap: impossibile confutarlo! Es. data una seq. 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 (al variare di i da n/2 a 1) attivando una
procedura sift(i,j) che ripete le seguenti operazioni
finche’ risulti 2i  j:
 scelta del minore tra i termini di indice 2i e 2i+1 (se
ci sono ! se no, si pone il minore = termine 2iesimo);
 confronto tra questo minore e il termine di indice i;
 eventuale scambio.
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
sempre la procedura sift(k,j). Al passo k si ottiene nel
primo posto una nuova radice con un 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.
20
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
COMPLESSITA' - CONFRONTI
METODO
#operaz.
selezione
n(n-1)/2
O(n )
per scambi
n(n-1)/4
O(n )
inserzione
n2/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
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
21
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000

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 t1 in vf
e avanza su v1;
else inserisci t2 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;
22
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
FUSIONE DI 2 FILE: f1 + f2 => ff
stesso algoritmo: invece di avanzare i puntatori avanzano i 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 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..
f3
ff
4
2
7
3
6
f2
2
7
5
..
..
2
3
4
5
6
7
2
3
4
5
6
7
8
1
8
..
..
..
..
(run ordinato)
5
1
..
f4
2
8
3
4
7
1
8
..
..
..
(da distribuire)
5
6
..
MERGE FINALE
f1
ff
f2
1
( run ordinato)
(ordinamento totale)
23
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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
sort-merge bilanciato in cui la lunghezza del run si
raddoppia ad ogni passo 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 lungo 2000
il run 2o va su B
“ “ 3o “ “ A
Il merge su C produce un 2o run lungo 2000
“ “ 4o “ “ B
“ “ 5o “ “ A
Su C va un 3o run 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 lungo 4000
il run 2o va su B
“ “ 3o “ “ A
Su C va un 2o run 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 lungo 5000
il run 2o va su B
PER L' ORDINAMENTO FINALE e’ necesario un numero
di passi npassi= log2 N/ L0
Per ridurre il numero di passi DUE Problemi:
24
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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 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)
merge polifase 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= logp (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 .
25
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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 files SORT di 165680100 run in 20 passi!
26
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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”, “bilanciatodetermina minore complessita’ della 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’ un ESEMPIO tipico dei
problemi piu’ antichi affrontati in informatica e interviene
in tanti campi, tipicamente in quello relativo ad
AUTOMATIZZARE
UN
AMBIENTE
il
cui
SIGNIFICATO e MOTIVAZIONI sara’ illustrato con
appunti a mano (2 pagine).
27
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
…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”) … 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 …
28
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
TIPIZZAZIONE
DEI
DATI
con
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.
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 (unidirezionale),
albero binario (2 direzioni per nodo);
29
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
“
a n vie (n “
“ “
grafo (rete) = { alberi | array }
(appunti a mano 1 pagina)
);
30
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Nei linguaggi ad alto livello che utilizzano una tipizzazione
avanzata con uso di tipi astratti come class, actor (ossia i
linguaggi orientati agli oggetti) ad ogni tipo di dato sono
associate tutte e solo le operazioni disponibili per elaborare
gli oggetti di quel tipo. (L’ idea estende quella 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!) Sulle strutture informative si possono
effettuare le operazioni 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 (splitting) 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 nel sort ad albero).
L’operazione 4 risulta “penalizzata” in una lista lineare dove
il tipo di ricerca puo’ essere solo di tipo lineare, sequenziale.
Si deduce che la lista lineare e’ valida per elaborazioni sull’
intera struttura (copiatura) e per ricerche, ma in tal caso solo
per un numero limitato di nodi (< 100).
31
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Costo degli algoritmi ed esempi
(appunti a mano 2 pagine)
32
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
basi 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 e Data Base Management System:
33
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
per le Motivazioni precedenti un File System/O.S. non
basta: occorre un D.B.M.S. (Data Base Management
System) che ne estenda le funzioni.
Inserimento dei DBMS (appunti a mano 1 pagina)
34
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
D.B.
single-user (privato) & multi-users.
single-user: esempio di Date (appunti a mano 1 pagina)
35
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
D.B.
multi-users: per rappresentare le informazioni di interesse di
un Sistema Informativo (cfr.+avanti) 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 da mantenere consistenti tra loro
permettendone o vietandone l’ accesso.
NOTA: informazione codificata  dato !!
36
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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).
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 !!
37
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Esempio problemi di consistenza (appunti a mano 1 pagina)
38
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
DBMS= Data Base Management Systems:
sistema software per gestire archivi di notevole
dimensioni, persistenti e condivisibili.
Presenta una organizzazione logica dei dati (interessante
per l' utente) che si basa su una organizzazione fisica
degli archivi.
L'Organizzazione logica dei dati segue
un modello di 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
illogico- sottolinea la caratteristica sostanziale del
modello):
la struttura usata contiene una sua organizzazione
(gerarchica, tabellare...)
I modelli sono:
GERACHICO,
RETICOLARE,
RELAZIONALE (piu' diffuso)
39
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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.
40
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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 coma 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
apposito (Commerciale o Artigianale) e le sue regole da seguire.
41
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
+in dettaglio:
Progetto di D.B. 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.
42
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Ciclo di vita del software ed esempi
(appunti a mano 1 pagina)
43
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Riepilogo su:
Progettazione di sistemi software;
Modellizzazione di ambienti;
Modelli di dati;
Ciclo di vita del software;
Progettazione di Basi di Dati;
Esempi.
(appunti a mano 1 pagina)
44
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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
Model” di Tsichritzis-Lochovsky e rappresenta lo schema
di un “Medical d.b.” (cfr. appunti a mano 1 pagina).
45
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Come si arriva a stendere tale schema?
Partendo da uno schema concettuale del tipo indicato negli
appunti a mano (1 pagina)
46
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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)  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 il progetto logico
contiene elementi di rappresentazione fisica (per es.
47
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
indici, puntatori ...)
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 2 livelli di schema logico (Schema e
View) che danno l' indipendenza fisica e logica dei
dati.
Quindi indipendentemente dal modello occorre:
1. conoscere la struttura,
l’architettura di un
Sistema di Gestione di Basi di Dati = S.G.B.D.
2. conoscere la composizione del D.B.M.S. = S.G.B.D.
per saper cio’ che il Sistema accetera’ in input e come
rispondera’.
48
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Logical schema, e
Architettura dei DBMS a 3 livelli di schema (appunti a
mano 3 pagine.)
49
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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. =>
_
interprete;
_
compilatore, se dotato di un proprio
linguaggio, altrimenti linguaggio e
compilatore ospiti per es. Cobol;
_
ottimizzatore ed esecutore accessi.
50
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Perche' un DBMS ?
(appunti a mano 1 pagina da Albano Orsini)
51
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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.
 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
52
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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. di Auditing & accontability)
_ 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 con i d.b. di tipo distribuito.
53
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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)
54
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
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 ...
55
Anna Maria Carminelli Gregori: Appunti su d.b. parte1 A.A.’99-2000
Cavalli di Troia per d.b. ****************************
Si tratta generalmante di programmi a prima vista utili per
effettuare calcoli interessanti (per es. statistiche), ma
contenenti codice nascosto (mascherato) che “legge-scrive”.
Situazione tipica: 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 su
uno dei suoi file FB questo sara’ copiato su FA e l’ utente A
carpira’ le informazioni di B.*************************
************************************************
Come difendersi ? In sintesi: 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
56