1.1. Data base relazionali 1.1.1. Cosa è un database Una base di dati (BD) o Data Base (DB) è un sistema di archivi (file) opportunamente organizzati per consentirne una facile consultazione da parte di altri programmi oppure da parte direttamente dell'utente finale. Il software di gestione di dette basi di dati è in genere organizzato in un apposito Sistema di Gestione di Basi di Dati (Data Base Management System - DBMS), spesso inglobato in appositi prodotti software commerciali. Tra i modelli classici delle basi di dati (gerarchico, reticolare, a liste invertite e relazionale), viene presentato unicamente il modello relazionale, quello più usato allo stato. L'architettura di un sistema di base di dati, così come per la maggioranza del software, è suddivisa essenzialmente in due livelli: - livello interno, che riguarda la struttura fisica degli archivi, la loro memorizzazione, le tecniche interne per la ricerca dei dati, l'efficienza del sistema e così via; - livello esterno, che riguarda la struttura logica dei dati così come viene vista dagli utenti. Lo studio delle basi di dati sviluppa in generale il livello esterno, mentre per il livello interno occorrono nozioni sulla struttura ed il trattamento degli archivi che non sono illustrate in questo corso. 1.1.2. Il DBMS e i linguaggi per il database Un DBMS è un sistema attraverso il quale l'utente esegue le seguenti operazioni: - Definizione dei dati del database, - Manipolazione dei dati, - Interrogazioni del database. A tale scopo esistono appositi linguaggi del DBMS, in genere associati ai sistemi commerciali che gestiscono le basi di dati e si confondono con essi: il linguaggio di DB2, DBASE-X, ORACLE, INFORMIX e così via. Uno standard de facto è il linguaggio SQL (Structured Query Language), comune a molti pacchetti, nato come linguaggio per l'interrogazione del database, ma adatto anche per la sua definizione e per la manipolazione dei suoi dati. Nei primi capitoli dei questo corso, ove non faremo riferimento ad uno specifico DBMS, useremo, limitatamente agli approfondimenti, il linguaggio SQL per illustrare alcune operazioni fondamentali di un database. Altra tecnica di interfaccia fra DBMS e operatore umano è la classe di linguaggi cosiddetti QBE (Query By Example), che realizzano le operazioni sul data base a mezzo di strumenti grafici, menù, tabelle ed icone. In realtà, la tecnica tipica dei linguaggi di quarta generazione e dei pacchetti specializzati consiste nell'interfacciare il DBMS con un sistema grafico e quindi nel tradurre in linguaggio SQL le operazioni richieste dall'utente in modalità grafica. Alcuni pacchetti DBMS rendono evidente, a richiesta, il testo SQL associato ad una operazione programmata graficamente. Useremo un linguaggio QBE specifico nei capitoli di coda di questo corso. 1.1.2.1. I linguaggi del database (approfondimento) In generale, esistono tre linguaggi distinti per programmare le attività di un DBMS, oppure tre sezioni distinte di un medesimo linguaggio, come per SQL: - Data Definition Language, DDL, che si rivolge al progettista che deve definire il database. - Data Manipulation Language, DML, che si rivolge al gestore della base di dati (Data Base Administrator). - Query Language, QL, che si rivolge all'utente che vuole trarre informazioni dal database, programmando quindi apposite interrogazioni. 1.1.2.2. Modalità operative del linguaggio SQL (approfondimento) SQL si presenta in tre distinte modalità applicative: - interattiva: l'utente fornisce una singola interrogazione ed ottiene in risposta il risultato a video (oppure su stampante); l'utente può poi proseguire con altre attività sul DB; - batch o programmata: viene scritto un programma contenente più manipolazioni o interrogazioni e quando il programma viene lanciato vengono eseguite in sequenza le interrogazioni richieste e visualizzati i risultati; - incorporata (embedded): SQL opera come sezione di un linguaggio di programmazione general purpose, ad esempio C++ 1.1.3. Le tabelle di un database Il modello di database relazionale trova i suoi fondamenti nel concetto di relazione o corrispondenza fra insiemi. La relazione è un concetto matematico, che trova peraltro una semplice realizzazione pratica: una relazione è una tabella costituita da colonne (dette anche campi) e da righe (dette anche record). Sul concetto e sulla strutture di una tabella si tornerà ampiamente in seguito, ma vogliamo fin d'ora introdurlo con un esempio (vedi figura) ove si presenta la tabella "anagrafica" di un ipotetico database. Una tabella di un database Nome Cognome DataNascita LuogoNascita .......... Gennaro Ambrogio Romolo ….. Esposito Rossi Romano …. 1/1/70 1/2/71 2/1/72 …. Napoli Milano Roma …. ..... ..... ..... …. 1.1.4. Data base relazionale: definizione ed esempio Si può dare la seguente, banale, definizione: Una base di dati relazionale è un insieme di tabelle (che, abbiamo detto, sono altrettante relazioni). 1.1.4.1. Il database Editrice (esempio) A titolo di esempio, si mostra un database semplificato, che ipotizza l'organizzazione dei dati di una casa editrice (per motivi di spazio, sono rappresentati pochi campi ed in ogni tabella pochi record). AUTORI Nome Data Bianco Ugo Bruni Bruno Esposito Gennaro Neri Marco Rossi Carlo Verde Mario 10/02/1980 30/01/1957 30/01/1970 31/12/1975 27/03/1965 01/01/1978 Indirizzo via Roma 27 via Rossi 34 via Tale 20 via Po 100 p,za Dante 27 via Francia 27 CF BNCGUO80B10F835W BRNBRN57A30F839W GNNSPS70A30F839X NREMRC751231G548 RSSCRL55C27G984Y VRDMRA780101F839 AUTORI_LIBRI LIBRI CodiceLibro Titolo Costo AAA1111 AAA2346 AAA2789 AAA2878 AAA3456 AAA7890 La montagna spaccata Squadra omicidi Uno contro tutti Il tramonto Il commissario Angel Il pirata Neil € 27,00 € 15,50 € 20,80 € 27,30 € 14,00 Genere Avventura Gialli Avventura Poesia Gialli Avventura CodFisc BNCGUO80B10F835W BNCGUO80B10F835W BRNBRN57A30F839W BRNBRN57A30F839W GNNSPS70A30F839X NREMRC751231G548 RSSCRL55C27G984Y VRDMRA780101F839 CodLibro Contratto AAA1111 CT001 AAA2346 CT002 AAA2346 CT004 AAA2789 CT006 AAA2878 CT006 AAA2878 CT007 AAA3456 CT008 AAA7890 CT009 GENERE Genere Collocazione Responsabile Avventura Gialli Poesia Saggistica a001 a002 a003 a004 Lippo Saverio Frangia Bruno . Mitocca Vincenzo Il database: "Editrice" La base di dati è costituita dalle tabelle: - AUTORI, che contiene i dati anagrafici degli autori; - LIBRI, che memorizza i libri pubblicati, identificati da un codice, il loro titolo , il costo di copertina e il genere cui appartengono (libro giallo, avventure, saggistica,...); - AUTORI-LIBRI, che pone in corrispondenza ciascun autore con i libri che egli ha scritto e con il relativo contratto stipulato; - GENERE: si suppone che la casa editrice abbia organizzato la produzione in generi, che ogni genere abbia un responsabile e che associata alla casa editrice vi sia una biblioteca, ove i testi sono collocati per generi: il genere G1 nel reparto L1 e così via. In particolare si precisano alcuni aspetti di dettaglio relativi al significato dei dati in esame: - ciascun autore può scrivere uno o più libri; - ciascun libro può essere scritto da uno o più autori; - ogni coppia libro-autore determina un contratto di per diritti di autore. 1.1.5. Ciclo di vita di una base di dati Le basi di dati vengono create, sviluppate e gestite in fasi distinte, sotto la cura di distinte figure professionali: il progettista, l'amministratore del database, l'utente finale a diversi livelli. In particolare si considerano le seguenti fasi. • Progettazione del database: consiste essenzialmente nella definizione della sua struttura (si vedrà in seguito che ciò significa definire lo schema del database e delle sue tabelle). • Popolamento iniziale: consiste nella prima immissione da parte dell'utente dei valori nelle tabelle (si vedrà in seguito che ciò si dice istanziazione dello schema con i dati concreti. Con tale operazione via via si accodano nuovi record a quelle già esistenti mentre il DBMS effettua tutti i controlli di coerenza e compatibilità dei dati previsti in fase di progetto. • Interrogazione del database: dalle tabelle memorizzate nel database si possono estrarre informazioni selezionando ed associando dati. Ciò si ottiene con le cosiddette query che descrivono le regole secondo le quali i dati vengono estratti ed associati. Le query sono programmate e possono essere memorizzate, in modo da richiamarle ed usarle all'occorrenza (ad esempio, per una applicazione di contabilità una query potrebbe essere memorizzata per preparare la denuncia mensile dell'IVA), ma possono nascere esigenze di interrogazioni estemporanee che si programmano quando servono. • Aggiornamento dei dati: i dati contenuti nella BD sono periodicamente aggiornati, cioè si inseriscono nuovi record nelle tabelle, se ne cancellano alcuni, si variano alcuni dati. Tutte queste operazioni, analogamente al caricamento iniziale, devono essere espletate con apposite verifiche dei vincoli di integrità. 1.1.6. La manutenzione del database A fianco alle operazioni legate al suo ciclo di vita, un database richiede operazioni di "manutenzione", tipicamente affidate al DBA (Data Base Administrator). Segnaliamo fondamentalmente: • Revisione dello schema: eccezionalmente è possibile ritoccare la struttura (lo schema) del database; questa è una operazione delicata, ma può essere richiesta per il miglioramento delle prestazioni oppure per il sopravvenire di nuove esigenze. • Revisione della struttura interna del database: per mantenere l'efficienza del database è necessario anche agire sul livello interno (vedi RICHIAMO) dello stesso, non trattato in questo corso, oppure operazioni attinenti gli aspetti fisici del database come ad esempio il compattamento del database per cancellare fisicamente gli oggetti cancellati logicamente e riorganizzare il tutto oppure il riordinamento fisico degli archivi, detto sort (si vedrà in seguito che sono possibili anche ordinamenti logici degli archivi). • Salvataggio (backup) periodico: I dati di un database costituiscono un prezioso patrimonio aziendale, che va salvaguardato rispetto ad eventi occasionali quali il danneggiamento fisico dei supporti oppure l'introduzione di informazioni errate. Per tale motivo è buona norma effettuare periodicamente un backup del database, ad esempio su supporti magnetici a nastro. Tale salvataggio è un'operazione essenziale e pesante (può durare anch'essa qualche ora) e di solito va eseguita anche nottetempo. RICHIAMO: § 1.1.1 - Cosa è un database