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 n50 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: ab? si / intermedi e terminali (foglie con i caratteri in corsivo). \ no b c? si / abc I nodi intermedi e la radice contengono un confronto, ac? \ no si / \ no ac? b<ac si / acb \ no c<ab le foglie un possibile ordinamento ottenuto sul si / cammino dalla radice alla foglia. bc? bc<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 hlog2n! 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