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