BASE DI DATI Una base di dati, detta anche database, può essere considerata come una raccolta di dati logicamente correlati tra di loro e utilizzati per modellare una determinata realtà. In questo caso, i dati, sono memorizzati su un supporto di massa e sono progettati per essere gestiti in modo: - Semplice, in quanto le informazioni devono essere facilmente reperibili - Efficiente, sia in termini di spazio con un efficiente utilizzo della memoria, sia in termini di tempo con uno efficiente utilizzo del microprocessore. - Efficace, in quanto le informazioni devono essere rappresentative della realtà che si vuole analizzare. Per gestire una base di dati, entra in funzione il cosiddetto DBMS, ovvero database management system, il quale è un insieme di strumenti software che provvede a garantire: - La gestione della base di dati, infatti, esso, deve permettere operazioni di creazione, inserimento, aggiornamento e interrogazione della base di dati. - La persistenza dei dati, infatti, esso, deve essere in grado di conservare intatto il contenuto della base di dati in caso di mal funzionamento del sistema. In sintesi, la base di dati, non deve avere un tempo di vita limitato ma deve durare nel tempo. - La consistenza dei dati, infatti, esso, deve fare in modo che i dati siano significativi ed utilizzabili nelle applicazioni dell'azienda per cui la base di dati è stata progettata. - La privatezza e la sicurezza dei dati, infatti, ciascun utente, deve essere autorizzato a svolgere solo specifiche azioni sui dati. In sintesi, la base di dati, deve impedire eventuali danneggiamenti del sistema o interventi da parte di utenti non autorizzati. - L'integrità dei dati, infatti, esso, deve garantire che le operazioni effettuate da utenti autorizzati non provochino una perdita di consistenza dei dati. - La scalabilità del database, in quanto deve essere possibile aggiungere altre informazioni - Il supporto alle transazioni, ovvero il supporto a quelle sequenze di operazioni effettuate su una base di dati, che possono concludersi con un successo o con un insuccesso. Nel caso di successo, le modifiche apportate alla base di dati devono essere rese permanenti, altrimenti, non deve rimanere traccia della transazione. - La gestione del dizionario dei dati, ovvero quella specie di catalogo della base di dati che contiene le informazioni che descrivono gli oggetti della base di dati (metadati). Nel caso di database relazionali, invece, si parla di relational database management system. In generale, un database management system, deve essere: - Efficiente, ovvero capace di svolgere le operazioni richieste, tramite un efficiente utilizzo della memoria (efficienza in termini di spazio) e un efficiente utilizzo del microprocessore (efficienza in termini di tempo). - Efficace, ovvero deve essere in grado di rendere semplici le attività richieste dagli utenti Oltre a questo, un database management system, è costituito da diversi livelli, ovvero: - Livello esterno che permette di far interagire i singoli utenti del database attraverso specifiche applicazioni e di fornire gli strumenti necessari per modificare e vedere i dati. In questo caso, per indicare una porzione di dati che ciascun utente può visualizzare, si utilizza il termine vista. - Livello concettuale o logico, che rappresenta la struttura logica assunta dai dati e quindi il loro schema astratto. - Livello interno o fisico, che è quello utilizzato per la memorizzazione dei dati, organizzati in file, record e strutture di accesso. In questo livello, troviamo il database fisico,che è costituito dall'implementazione del database logico. I linguaggi principali che il database management system mette a disposizione, sono: - DBA (database administrator), che riguarda l'amministratore del sistema e fornisce a ciascun utente un sottoschema del database logico, ovvero una vista. - DML (data manipulation language), che consente di interrogare il database e soprattutto di inserire, cancellare e modificare i dati. - DDL (data definition language), che viene utilizzato per descrivere le caratteristiche delle categorie di dati presenti nel database e le corrispondenze esistenti tra di esse. - DCL (data control language), che permette di controllare gli accessi degli utenti - DMCL (device media control language), che organizza i dati in modo da raggiungere l'obiettivo dell'efficienza del database. Infine, il database management system, permette di superare alcune difficoltà, presenti ancora in un archivio, tra cui: - La ridondanza dei dati, ovvero la memorizzazione degli stessi dati in diversi file - L'incongruenza dei dati, ovvero una versione non aggiornata dei dati e questo porterebbe a un'errata interpretazione degli stessi. - L'inconsistenza di dati, ovvero l'aggiornamento di alcuni dati e il non aggiornamento di altri e questo renderebbe inaffidabile il risultato di ogni interrogazione. - La concorrenza, che si ha quando vari programmi operano su uno stesso file tentando di accedere ai suoi dati. Se due programmi leggono uno stesso valore iniziale e lo modificano contemporaneamente, solo l'ultima operazione di modifica sarà registrata, con il risultato che un'operazione di scrittura andrà persa. SISTEMA INFORMATIVO E SISTEMA INFORMATICO Un sistema informativo, è un insieme organizzato di strumenti automatici, procedure manuali, e risorse umane e materiali, orientato alla gestione delle informazioni rilevanti per un'organizzazione, ovvero alla raccolta, all’archiviazione, all’elaborazione e allo scambio di informazioni. Un sistema informatico, invece, è un sistema informativo, che fa uso di tecnologie informatiche. In sintesi, un sistema informatico, ed insieme degli strumenti informatici utilizzati per il trattamento automatico delle informazioni. Sistema informativo e sistema informatico DATI, INFORMAZIONI, SCHEMI E ISTANZE Il dato, è un qualcosa di non organizzato, mentre se si attribuisce ad esso una chiave di interpretazione che consente di comprendere il suo significato, allora, il dato, diventa informazione. In sintesi, l'informazione è l'incremento di conoscenza che può essere acquisita dai dati. Se ad esempio consideriamo una popolazione formata da soli numeri, non sappiamo a cosa essi sono attribuiti e quindi non hanno alcun significato. Se a questi numeri si attribuisce una chiave di interpretazione come ad esempio articoli in magazzino, allora, sappiamo che quei dati si riferiscono agli articoli presenti in magazzino. Questa chiave di interpretazione dei dati, o meglio il significato che si attribuisce al dato per ricavare informazione, si chiama schema o intensione. L'insieme dei valori assunti da uno schema in un certo istante di tempo, invece, si chiama istanza di uno schema o estensione. In generale, si parla di significato intensionale quando ci si riferisce al contenuto informativo dei dati e quindi alla loro interpretazione, mentre si parla di significato estensionale, quando ci si riferisce ai valori che uno schema può assumere in un certo istante di tempo. Oltre a questo, si parla anche di categoria quando si vuole indicare un gruppo di dati aventi la stessa chiave di interpretazione, ovvero lo stesso schema, mentre si parla di occorrenza di una base di dati, quando si vuole indicare l'insieme delle istanze delle categorie in un determinato istante di tempo. Categoria, Attributo, Schema, Istanza e valore Esempio significato intensionale del dato 23: “quantità in magazzino dell’Art01” MODELLO DI DATI Un modello di dati è un insieme di concetti utilizzati per organizzare i dati e descriverne la struttura e la dinamica. Nella giuria della base di dati, i modelli, si distinguono i modelli concettuali che mettono in evidenza i concetti presenti una base di dati e modelli logici e consentono di rappresentare in modo specifico i dati. I principali modelli logici, sono: - Modello gerarchico (struttura ad albero): i dati sono organizzati in record connessi tra di loro secondo struttura ad albero. Ogni record del database deve avere un unico padre, ma possono esserci più record che rappresentino la stessa informazione. Inoltre, la cancellazione di un record comporta l'eliminazione di tutti i record dipendenti da esso, mentre l'aggiornamento di un dato richiede la modifica di altri il record per assicurare la consistenza del database. Un esempio di modello gerarchico, è dato dai file system. - Modello reticolare (struttura a grafo): è basato su strutture di dati a reticolo e deriva dal modello gerarchico ma si differenzia in quanto i record sono legati tra di loro con strutture ad anello che permettono all'utente finale di accedere ai dati in maniera più semplice. Inoltre, in questo caso, un record può avere uno o più padri e quindi si evitano i problemi relativi alla ridondanza dei dati. Infine, la gestione delle informazioni in un modello reticolare, è più complessa in quanto deve essere utilizzata una struttura a grafo e quindi risulta difficile l'implementazione e la costruzione del software. Lo svantaggio principale, è che bisogna cancellare e ricreare il database quando lo si vuole modificare. - Modello relazionale (struttura a tabelle): è basato sul concetto di insiemi di record e le relazioni tra le informazioni derivano da alcuni campi record relativi ad altre tabelle. - Modello a oggetti: riprende il concetto di programmazione ad oggetti ma soprattutto supera alcune caratteristiche dei database relazionali quali le applicazioni multimediali. In generale, lo sviluppatore del database, gestisce tutti gli aspetti del database stesso. Modello gerarchico Modello relazionale Modello reticolare Modello a oggetti PROGETTAZIONE DI UNA BASE DI DATI La metodologia di progettazione di una base di dati parte da un insieme di specifiche che formalizzano le esigenze dell'utente. Successivamente, queste specifiche della realtà di interesse vengono trasformate in specifiche formali, dopo una prima fase di analisi, in cui viene determinato cosa deve fare il programma. Infine, questa fase di progettazione di una base di dati, è volta a determinare come il programma dovrà fare quanto stabilito e quindi in che modo il documento di specifiche formali viene trasformato in programma. In sintesi, si assiste ad un approccio asimmetrico, detto a pari dignità, tra dati e funzioni, in cui la risorsa centrale sono i dati. Fase di progettazione di una base di dati Approccio asimmetrico tra dati e funzioni Le progettazioni principali di una base di dati, sono: - Progettazione concettuale che costruisce e definisce una rappresentazione corretta e completa della realtà di interesse. L'input di questa fase sono le specifiche formali, mentre l’output è uno schema concettuale, ovvero una rappresentazione astratta della realtà. - Progettazione logica che trasforma la rappresentazione ancora astratta in uno schema logico. L'input di questa fase è il diagramma E/R della fase di progettazione concettuale, mentre l'output è uno schema logico riassumibile con relazioni rappresentate tramite tabelle. - Progettazione fisica che implementa lo schema logico definendo tutti gli aspetti fisici di memorizzazione e di rappresentazione in memoria di massa. L'input di questa fase sono le tabelle della fase di progettazione logica, mentre l'output è l'implementazione in memoria di massa di tali tabelle, ovvero i file.