modulo 5 Access ud1 Comprendere i database ud2 Utilizzo dell’applicazione ud3 Le tabelle ud4 Cercare le informazioni ud5 Gli oggetti maschere ud6 Gestione delle stampe Prerequisiti • Disporre delle nozioni di base circa il funzionamento del PC e del sistema operativo Obiettivi • Saper creare e modificare tabelle, query, maschere e report • Saper creare e gestire relazioni tra tabelle • Saper estrarre e manipolare le informazioni contenute in un database unità didattica 1 Comprendere i database prerequisiti Disporre delle nozioni base sul funzionamento del PC Conoscere le basi dell’utilizzo del sistema operativo Windows obiettivi Distinguere tra dati e informazioni Sapere cosa è un database e quali sono i modelli di database Distinguere un DBMS da un database Sapere come è organizzato un database relazionale Conoscere cosa è una tabella e comprendere i concetti di campo, chiave primaria e indice Capire l’importanza delle relazioni tra tabelle Conoscere le diverse figure professionali che operano sui database 1. Introduzione Molti ritengono che il motivo principale della diffusione dei computer nei diversi ambienti di lavoro, studio e domestici sia da indicare nella capacità di memorizzare grandi quantità di dati. Si pensi infatti che durante gli anni ’60 uno dei primi settori che ha visto l’introduzione degli elaboratori elettronici come strumento quotidiano di lavoro è stato quello bancario, nel quale era (ed è tuttora) molto sentita l’esigenza di conservare ed elaborare grosse quantità di dati. Naturalmente, in quegli anni la presenza di dispositivi informatici nelle aziende non era lontanamente paragonabile a quella che oggi si può osservare in qualsiasi ambito di lavoro; inoltre, da allora sino ai giorni attuali, le prestazioni dei computer hanno seguito un andamento esponenziale, sia per quanto riguarda le velocità di calcolo dei microprocessori che la capacità di memorizzazione dei dati sui supporti connessi ai computer. Al giorno d’oggi, infatti, nessuno si meraviglia se anche l’utilizzatore più comune di sistemi informatici dispone della possibilità di immagazzinare centinaia di miliardi di byte su hard disk, CD-ROM, DVD ecc. Pertanto, uno dei principali compiti di un sistema informatico è senza dubbio costituito dalle funzioni di raccolta, organizzazione ed archiviazione dei dati. Molte attività ordinarie svolte nelle aziende, ma anche in ministeri, uffici e scuole sono rivolte infatti a gestire azioni su moli notevoli di dati, come elenchi di abbonati ad un certo servizio, quotazioni di titoli finanziari nei mercati borsistici di tutto il mondo, movimenti dei conti correnti bancari o di carte di credito, gestione di riscossione di crediti ecc. D’altro canto, sempre più utenti chiedono l’accesso ai dati relativi alla loro posizione finanziaria (come ad esempio la disponibilità del loro danaro attraverso POS, bancomat, carte di credito), anagrafica (stato di famiglia, certificato di residenza ecc.) o in relazione ad altre situazioni di vita quotidiana (certificazione delle competenze, verifica dell’identità per ingresso a manifestazioni sportive ecc.). Per garantire tutto ciò, è necessario non solo disporre di numerosi sistemi di memorizzazione dei dati, ma anche seguire tecniche di progettazione di banche dati e utilizzare sofisticati sistemi software di gestione delle informazioni che offrano all’utente finale risposte efficienti alle continue interrogazioni poste. 252 Modulo 5 • Access Agli albori dell’informatica i dati erano organizzati in file separati, ciascuno dei quali conteneva dati di un particolare aspetto del sottosistema informativo. In un’azienda esisteva pertanto il file anagrafico dei clienti, quello dei fornitori, il file dei movimenti contabili, il file del piano dei conti ecc. Ogni programma applicativo elaborava dati presenti su ciascun file e ciò spesso comportava una serie di fenomeni negativi tra i quali la dipendenza dei programmi dai dati: quando emergeva il bisogno o la necessità di mutare la struttura di un file, ad esempio per l’inserimento di un nuovo attributo oppure per la variazione (in dimensione o in tipologia) di un attributo preesistente o per la sua rimozione, si era costretti a rivedere tutti i programmi che avevano a che fare con quei file variati, con conseguenze di aumento di costi ed impegni lavorativi. Un altro inconveniente dell’organizzazione tradizionale dei file era dovuto alla presenza multipla degli stessi dati su archivi separati. Questo fenomeno, noto con il termine di ridondanza, era dovuto al fatto che a causa della dipendenza dei programmi dai dati la disponibilità di questi ultimi doveva essere garantita a ciascun programma e pertanto ciò rendeva necessario duplicare i dati su diversi file. Gli svantaggi della ridondanza di dati non erano limitati al solo costo della loro memorizzazione sui diversi supporti, ma riguardavano anche l’impegno connesso alle operazioni da eseguire per garantire gli aggiornamenti di tutte le occorrenze in tutti gli archivi, in conseguenza di una variazione. Consideriamo ad esempio un ipotetico Sistema Informativo riguardante l’Ufficio Fatturazione di un’azienda di distribuzione, che memorizza parte dei suoi dati di gestione in tre file: • Clienti, contenente i dati anagrafici dei propri clienti; • Fatture, contenente le operazioni di vendita; • Solleciti, contenente le richieste di pagamento ai clienti morosi. Ipotizziamo che i file contengano i seguenti dati: File Clienti Codice Cliente Ragione Sociale Indirizzo Località E-mail Telefono Data ultima fattura File Fatture Numero fattura Data fattura Codice Cliente Ragione Sociale Indirizzo Imponibile Importo Iva Totale fattura File Solleciti Codice Cliente Ragione Sociale Indirizzo Località Numero fattura Data fattura Importo fattura UD1 • Comprendere i database 253 È chiaro che una situazione del genere comporta inevitabilmente che gli stessi dati (ad es. Indirizzo o Importo fattura) compaiano più volte sia nei diversi file che addirittura all’interno dello stesso file (Fatture e Solleciti) Gli svantaggi di tale ridondanza comporterebbero notevoli disagi oltre che situazioni ad alto rischio: se ad esempio un cliente comunicasse un cambiamento di indirizzo occorrerebbe procedere alla variazione di quell’indirizzo in tutti i file in cui esso è memorizzato. Se si pensa che le variazioni dei dati in un’azienda di dimensioni medio-grandi sono frequentissime è inevitabile attendersi che in casi non sporadici tali numerosi aggiornamenti non siano sempre eseguiti, comportando ciò l’ulteriore problema dell’incongruenza dei dati. In questi casi, un’interrogazione del sistema informatico può portare a risultati errati, dovuti alla presenza di dati non corrispondenti ad una mutata realtà, a causa del mancato aggiornamento di dati ridondanti. Questi fenomeni negativi causavano dunque una mancata affidabilità del sistema informativo, detto anche inconsistente. A questi limiti, propri della struttura tradizionale dei file diffusa sino agli anni ’70, è stata data risposta attraverso la realizzazione dei database e la loro diffusione nell’ambito dei sistemi informatici. 2. Dati, informazioni e database (syllabus 5.1.1.1; 5.1.1.2; 5.1.1.4) Quando si discute della descrizione di un evento reale, dati e informazioni sono spesso utilizzati come sinonimi, anche se si tratta di due concetti ben distinti fra loro. Da un punto di vista generale, il dato è un attributo di un fatto reale. Ad esempio, considerando una determinata scuola, «800» potrebbe rappresentarne un dato, così come «Diaz» potrebbe rappresentare un altro dato. In altre parole, riprendendo l’esempio appena avanzato, «800» e «Diaz» potrebbero rappresentare due attributi di quella realtà scolastica, che contiene al suo interno migliaia e migliaia di dati. «800» potrebbe rappresentare il costo in euro di un dispositivo informatico acquistato dalla scuola oppure il numero dei banchi inventariati oppure il prefisso telefonico del servizio di iscrizione attivato dall’istituto. «Diaz» invece potrebbe essere il nome di un alunno, oppure il nome della Via dove si trova la sede succursale della scuola, o altro ancora. Quei dati si trasformano in informazioni solo se sono sottoposti ad un processo di interpretazione e di contestualizzazione. L’informazione, dunque, è qualcosa che accresce la conoscenza ed è ottenuta dall’elaborazione di più dati. Quando i dati, da semplici rilevazioni di eventi, sono riorganizzati in modo da essere trasformati in qualcosa di utile, comprensibile e significativo, allora diremo di aver ottenuto l’informazione. Sempre riferendoci all’esempio precedente, potremmo dire che «La scuola Diaz è frequentata da 800 studenti»: in questo caso abbiamo delle informazioni che accrescono la conoscenza di chi le riceve. In fondo, da queste semplici considerazioni si ottiene la sintesi dell’importanza dell’informatica nel mondo attuale: l’elaborazione di semplici (ma numerosi) dati eseguita da un computer in tempi rapidissimi produce l’informazione, vero valore aggiunto del processo elaborativo. Lo schema riprodotto nella figura 1 aggiunge anche ulteriori elementi di riflessione: i dati costituiscono l’input (immissione) del processo elaborativo; l’inFig. 1 Elaborazione di dati e informazioni formazione si può anche identificare come il risultato dell’elaborazione. Dovrebbe risultare chiaro che quando l’utente di un sistema informatico indirizza una richiesta, ovvero esegue un’interrogazione (query), egli è alla ricerca ed in attesa di ottenere informazioni. Da un altro punto di vista, occorre riflettere su un aspetto: l’uomo moderno è letteralmente sommerso da quantità enormi di dati che invece di creare un beneficio provocano uno squilibrio ed un vero e proprio «stress informativo». Un computer, allora, se è supportato, come vedremo tra poco, da un efficiente sistema di memorizzazione e di gestione di database, è utile per elaborare correttamente i numerosi dati e fornire informazioni puntuali e preziose. Una prima definizione di database potrebbe essere la seguente: un database o base di dati è una raccolta coordinata ed integrata di dati, progettata e organizzata in modo che i dati siano fruibili in modo semplice da più applicazioni e da più utenti. 254 Modulo 5 • Access Dalla definizione precedente emergono alcune caratteristiche: • i dati sono memorizzati in più archivi ma costituiscono un unico oggetto contenitore (il database); • il reperimento delle informazioni dal database deve essere facile, veloce e possibile attraverso un «motore» di accesso; • al database può accedere qualsiasi programma per compiere interrogazioni o per arricchire l’intero patrimonio informativo; • il database serve una molteplicità di utenti che contemporaneamente possono attingere ai dati in esso contenuti. Si può ora passare ad una definizione più completa di database: un database è un insieme organizzato di dati, strettamente correlati e memorizzati su un supporto di memoria ausiliaria costituenti un’unica raccolta unitaria, controllata da un software generalizzato di gestione con lo scopo di raggiungere un alto grado di efficienza nel trattamento, nella ricerca e nella distribuzione delle informazioni. Perciò, quando si parla di database non si deve pensare ad un singolo file o ad uno specifico elenco di dati relativi, ad esempio, ad un insieme di clienti o amici o libri, ma ad una realtà più articolata di un settore informativo. Un database risponde piuttosto al bisogno di tenere sotto controllo differenti aspetti di un ambito più ampio e che abbracci diverse entità informative, sia statiche che dinamiche, cioè che presentano continuamente variazioni sia qualitative che quantitative. Se vogliamo ad esempio gestire una biblioteca, seppur piccola, è conveniente pensare ad un database, in quanto occorre non solo memorizzare libri, ma anche autori, materie, soggetti cui si prestano libri e dai quali devono ritornare ecc. Altri semplici esempi di situazioni informative che richiedono il ricorso a database potrebbero essere la gestione di orari scolastici, le visite di uno studio medico, i sondaggi telefonici ecc. In tutti questi casi, oltre a memorizzare in modo più o meno statico i dati delle rilevazioni degli eventi in oggetto, si tratta poi di procedere ad elaborazioni che rispondano a domande del tipo: • • • • • in quali classi il prof. Rossi va il martedì? quali sono i giorni nei quali la classe I A svolge 6 ore? quante sono le visite mediche dentistiche da svolgere oggi? in quale zona risiedono coloro che sono favorevoli alla domanda 3 del sondaggio? qual è la percentuale di maschi che ha risposto negativamente alla domanda 6? Naturalmente nelle realtà aziendali, dalla bottega più piccola sino alla grande azienda multinazionale, i database costituiscono gli strumenti informativi costanti e puntuali cui fa riferimento qualsiasi sistema informativo automatizzato, dal personal computer stand alone al main frame o supercomputer di cui dispone una grande società commerciale. capiamo le parole Stand alone: quando un computer è usato in modo autonomo e pertanto non è collegato ad una rete di computer viene indicato con il termine stand alone. Main frame: con questo termine dimensioni, in grado di fornire alte prestazioni, sia nel senso del numero di utenti serviti dalle elaborazioni (centinaia o migliaia) che in quello del numero dei processi eseguiti in una certa unità di tempo. si indica un computer di grandi Tra gli utilizzi più comuni di database di grandi dimensioni ai quali accediamo frequentemente nel corso della giornata, indichiamo i seguenti settori: • • • • mezzi di trasporto e di locomozione collettivi; servizi della Pubblica Amministrazione; servizi bancari; sanità pubblica. Per quanto riguarda i mezzi di trasporto e rispondendo alle crescenti richieste di trasferimento da un luogo all’altro della Terra, il sistema di prenotazione di posti aerei è l’esempio più frequente di utilizzo di database. Le prenotazioni dei biglietti vengono effettuate presso agenzie di viaggio o da casa attraverso applicazioni connesse via Internet ai database dei diversi vettori di viaggio. È importante comprendere che in questi casi risulta cruciale che il database (o DBMS) sia connesso in tempo reale con le diverse entità informative costituenti il database stesso, in quanto l’effetto di una prenotazione UD1 • Comprendere i database 255 di un posto deve avere un effetto diretto ed immediato in tutto il database, in modo da rendere indisponibile lo stesso posto ad un altro utente da quell’istante in poi. In questo caso deve essere garantito anche un sistema di riconoscimento dell’utente, allo scopo di dare affidabilità alla prenotazione e di consentire il pagamento del biglietto, usualmente eseguito attraverso sistemi di pagamento elettronici (carta di credito, Poste-pay, Bancomat ecc.). Anche la Pubblica Amministrazione offre una serie di servizi al pubblico, con la messa a disposizione dei suoi database attraverso postazioni speciali presso i suoi uffici oppure direttamente a casa dei cittadini con il ricorso alla rete Internet. Esempi significativi e riconosciuti di enti pubblici che si sono distinti in questo campo sono l’INPS, l’ENPDAP, i diversi Ministeri, le Regioni, i Comuni, le Università ecc. In tutti questi casi, con le dovute specificità, i database messi a disposizione riguardano due sfere di competenza: da un lato, le applicazioni espongono a video ed in stampa dati di pubblico interesse come leggi, circolari, direttive, disposizioni ed informazioni di vario genere. Se invece il cittadino vuole accedere ad una situazione specifica riguardante la propria posizione personale, ad esempio il proprio estratto contributivo INPS o il cedolino paga mensile o una certificazione anagrafica, allora occorre dapprima procedere ad una fase di registrazione durante la quale il sistema si accerta della reale autenticità della persona, anche in rispetto alle normative che tutelano la privacy. Una volta terminata con successo la fase di registrazione, normalmente l’utente riceve a casa o presso la propria casella di posta elettronica (indicata durante la registrazione) una coppia di codici personali e riservati, denominati User-id e password. Quando l’utente vuole accedere al database per ottenere servizi ad una sua richiesta, il DBMS richiede la Userid e la password per garantire la riservatezza e concedere l’autorizzazione ai dati. Il settore bancario è tra quelli che fanno ricorso più frequentemente alle applicazioni di database per offrire servizi a casa per i propri clienti: oggi qualsiasi istituto di credito si presenta come banca on-line sia per migliorare la qualità dei servizi ed il grado di soddisfazione della propria clientela che per attuare il contenimento dei costi delle agenzie, comunque presenti nel territorio. In ogni caso, le applicazioni informatiche che viaggiano in rete attraverso sofisticati programmi in linguaggi evoluti come Java, HTML, PHP mettono a disposizione dei propri utenti — garantendo nel contempo con rigorosissimi algoritmi di crittografia la privatezza delle comunicazioni delle informazioni — dati, notizie e documenti relativi ai rapporti di conto corrente, deposito titoli, mutui ecc. Tra i servizi pubblici che hanno risentito positivamente dell’avvento dell’informatica distribuita, si annovera senza dubbio la sanità pubblica. Sempre più spesso il cittadino ricorre al CUP (Centro Unico di Prenotazione) attraverso il quale accede ai servizi ospedalieri per visite, ricoveri, prestazioni specialistiche ecc., in tempo reale e senza fare code di attesa agli sportelli amministrativi. In diversi casi si può anche ottenere a casa propria, senza dispendio di energia e costi di trasporto, la propria cartella sanitaria o l’esito di una prestazione. Tutto ciò viene ottenuto attraverso la progettazione, la realizzazione e la manutenzione di database interconnessi all’interno della struttura pubblica ed in qualche caso (sempre più frequente) anche verso database di altri comparti pubblici. 3. Database e DBMS (syllabus 5.1.1.1) Con il termine di Data Base Management System (DBMS) si indica il programma di gestione del database che si occupa della memorizzazione, dell’organizzazione e della gestione dei dati: è ad esso che fanno capo tutte le operazioni di inserimento di nuovi dati, di cancellazione di quelli inutili, di modifica di quelli obsoleti od errati, e di ricerca. Attraverso il sistema di gestione del database, l’elaborazione dei dati contenuti nel database, aggregati tra loro o estratti secondo i criteri fissati in sede di progetto, sarà in grado di fornire informazioni, ossia di accrescere il livello di conoscenza dei fruitori del database. Ai fini della ricerca di informazioni, inoltre, sarà possibile catalogare i diversi dati ed estrarre solo quelli interessanti ed utili per le richieste di volta in volta proposte dall’utente finale, che sarà facilitato nel prendere le decisioni. 256 Modulo 5 • Access seguimi DBMS (Data Base Management System) Un Data Base Management System è un programma che consente di archiviare, modificare ed elaborare dati in un database; oltre alle funzioni di inserimento, modifica, cancellazione e ricerca dei dati, sono previste anche altre azioni: • valida i dati, ossia controlla che siano corretti e rispondano alle regole d’inserimento fissate dal progettista in base a criteri indicati dall’utente (ad esempio una data deve essere compresa tra due estremi, oppure un numero non può essere negativo). Questi controlli danno luogo a quella che viene definita integrità dei dati; • verifica che non ci siano inutili duplicazioni di dati, che causano ridondanza, e permette di eliminarle senza perdita sostanziale d’informazione. Questa operazione si chiama normalizzazione del database; • organizza i dati secondo la struttura prestabilita in fase di progettazione e li ordina di conseguenza, ossia li indicizza; • controlla che le operazioni sui dati (lettura/scrittura/cancellazione) siano consentite alle sole persone autorizzate, ad esempio limitando l’accesso attraverso password. In tal modo vengono rispettate la riservatezza e la sicurezza dei dati; • regola gli accessi concomitanti di più utenti allo stesso database per evitare conflitti ed incoerenze (assegnazione dello stesso posto in treno o della stessa camera d’albergo a due persone diverse, spedizione della stessa merce a due clienti ecc.); • elabora i dati e rende le informazioni ottenute accessibili agli utenti; • verifica che alla modifica di un dato faccia seguito l’aggiornamento di tutti i dati eventualmente dipendenti da esso. Con l’adozione del DBMS, più applicazioni possono accedere allo stesso database, come schematizza la figura 2. Si ribadisce, così come emerge dalla figura 2, che DBMS e database sono due cose ben distinte: il primo è il sistema di programmi che operano sul database e rendono possibile la sua fruizione per gli utenti finali; il database è formato esclusivamente dai dati e dalle relazioni esistenti fra essi. Tra i più diffusi DBMS esistenti sul mercato si indicano: ORACLE di Oracle Corporation, Informix, DB2 di IBM, SQL Server di Microsoft e MySQL di MySQL AB. Fig. 2 Data Base Management System In conclusione, i vantaggi dell’adozione di un DBMS per la gestione di un database sono così sintetizzabili: • • • • • • • indipendenza dati/programmi; utilizzo da parte di più utenti; riduzione delle ridondanze; facilità di accesso; integrità dei dati; sicurezza dei dati; uso di linguaggi per la gestione dei database. seguimi Dati e metadati I dati raccolti in un database si possono suddividere in due categorie: • metadati: formano lo schema del database e comprendono le regole di validazione (vincoli d’integrità) e il modo in cui i dati sono collegati tra loro. Lo schema deve essere definito in fase di progettazione dell’archivio, ovvero prima di iniziare ad inserire i dati, ma non è fisso ed immutabile, poiché, nel tempo, può essere sottoposto a modifiche; • dati veri e propri: sono una rappresentazione della realtà (nel magazzino aziendale ci sono 100 pezzi di batterie alcaline, il codice d’avviamento postale di Roma è 00100, il primo verso della Divina Commedia è «Nel mezzo del cammin di nostra vita» ecc.), ma possono anche essere previsioni o ipotesi (forse il prossimo bilancio sarà in attivo), purché siano conformi ai metadati, nel senso che devono rispettare le regole e la struttura del database fissate nello schema. I dati devono essere organizzati in insiemi omogenei, collegabili con altri, e devono essere indipendenti dal DBMS che li gestisce: in caso contrario, l’obsolescenza di un DBMS provocherebbe il mancato riutilizzo del database creato e gestito da esso. Un database corretto deve altresì possedere un carattere di coerenza, affidabilità ed i dati in esso contenuti non devono essere contraddittori: se risponde a queste caratteristiche si dice che il database è consistente. UD1 • Comprendere i database 257 Tornando al Sistema di Gestione di Data Base, occorre dire che esistono diversi DBMS, nel senso che è possibile ispirarsi a diversi modelli di data base: • modello gerarchico; • modello reticolare; • modello relazionale; • modello ad oggetti. Il modello gerarchico di database dal punto di vista cronologico è stato il primo ad essere stato adottato, alla fine degli anni ’60. Secondo tale modello, i dati devono essere rappresentati secondo una struttura ad albero, nella quale gli archivi sono costituiti da ricorrenze (dette segmenti) legate da rapporti gerarchici del tipo padre-figlio. Un segmento (padre), perciò, può avere uno o più segmenti (figli) ad esso subordinati ed il rapporto è del tipo 1 a n. La figura 3 schematizza quanto accennato, riportando l’organizzazione dei dati presenti in una fattura, dove nella parte superiore, detta testata, compaiono i dati generali del documento (numero, data, cliente, modalità di pagamento, indirizzo di spedizione, imponibile Iva, importo totale ecc.). Nella parte centrale del documento, invece, compaiono le righe, in Fig. 3 Struttura gerarchica di una fattura numero variabile (da 1 a n), in ciascuna delle quali presumibilmente si indica l’articolo, la quantità venduta, il prezzo unitario ecc. Il modello reticolare di database ha cercato di dare una risposta ai limiti e agli svantaggi insiti nel modello gerarchico. Se infatti in un data base gerarchico un segmento figlio può avere solo un segmento padre, nel database reticolare il rapporto è del tipo n a m, e ciò viene consentito dalla presenza di record di collegamento (link). La figura 4 rappresenta un modello reticolare di data base. Nel 1970 un decisivo contributo offerto da Edward Codd ha permesso di introdurre un nuovo modello di database, denominato relazionale e che attualmente costituisce il più diffuso tipo di modello adottato nei database. In un database relazionale i dati sono organizzati in tabelle collegate tra loro in modo da limitare al massimo il rischio delle ridondanze dei dati, in quanto la Fig. 4 Schema del modello reticolare di database suddivisione dei dati fa sì che in ogni tabella non ci siano duplicati. Ogni tabella contiene dati omogenei (per esempio: la tabella delle schede anagrafiche clienti, la tabella dei fornitori, la tabella degli studenti ecc.). Le righe di una tabella sono dette record, mentre le colonne costituiscono i campi, così come rappresentato in figura 5. Campo 1 Dato 11 Dato 21 ..... Dato N1 Campo 2 Dato 12 Dato 22 ..... Dato N2 ..... .... Fig. 5 Struttura di una tabella di un database relazionale 258 Modulo 5 • Access Campo K Dato 1K Dato 2K ..... Dato NK Record Ogni colonna, ovvero ogni campo di una tabella deve avere una serie di caratteristiche (proprietà), tra le quali: • un nome; • un formato (testo, numerico, data ecc.); • una dimensione; • l’indicazione dell’obbligatorietà del dato o meno. Il modello di database ad oggetti, sviluppato negli anni ’80, prevede l’estensione di alcune caratteristiche tipiche del modello relazionale per rispondere alle esigenze delle applicazioni multimediali. In particolare, questo modello adotta il paradigma della programmazione ad oggetti (OOP) anche per le operazioni di manutenzione dei dati. 4. Organizzazione del database (syllabus 5.1.1.3; 5.1.2.1; 5.1.2.2) Come abbiamo accennato alla fine del precedente paragrafo, nel modello relazionale i dati sono memorizzati in tabelle. Ciascuna tabella, come si può vedere in figura 5, a prima vista assomiglia ad un foglio elettronico, nel senso che i dati sono divisi in righe ed in colonne; in realtà, invece, la tabella è una struttura suddivisa in record, ciascuno dei quali contiene i diversi attributi (campi) dell’oggetto da memorizzare. Perché il database sia corretto dal punto di vista del modello logico, occorre che ogni tabella contenga dati relativi ad una sola entità di riferimento. Ad esempio, se ci riferiamo ad un database di gestione di una biblioteca scolastica, si può pensare che le entità di riferimento possano essere i libri, gli autori, le materie di riferimento di ciascun libro, i movimenti di prestiti e di restituzione dei libri. In questo caso, è tassativo che ogni tabella contenga solo dati relativi ad una singola entità e perciò si avranno le seguenti tabelle: • tabella LIBRI; • tabella AUTORI; • tabella MATERIE; • tabella PRESTITI; • tabella RESTITUZIONI. Volgendo ora l’attenzione alla struttura di una tabella ed in particolare alla struttura di ciascun record, occorre rammentare che è compito del progettista del database individuare gli attributi da memorizzare. Ad esempio, per la tabella LIBRI si potrebbe pensare di memorizzare per ciascun libro i seguenti attributi: • codice libro; • titolo libro; • codice autore; • codice materia; • anno edizione; • prezzo libro; • prestato (sì / no). Una cosa importante da tener presente è che è buona pratica d’uso l’attribuzione a ciascun campo di un solo dato elementare, ovvero ogni campo deve contenere «attributi atomici». Fig. 6 Best practice per la progettazione di campi Pertanto è una best practice progettare e realizzare campi come codice fornitore, importo fido, data fattura, mentre è assolutamente da evitare un campo che contenga l’indirizzo di un soggetto (inteso come unione della via, della località, della provincia e del c.a.p.), oppure un campo che contenga l’identificativo di un condomino come isolato, scala, piano, interno. Come mostrato nella figura 6, una soluzione da adottare è quella di memorizzare ciascuna componente dell’indirizzo o dell’immobile nel campo specifico. UD1 • Comprendere i database 259 5. Progettare i campi di una tabella (syllabus 5.1.2.3; 5.1.2.4) Ogni campo deve essere identificato da un nome e deve appartenere ad uno dei tipi seguenti: • • • • • • • testo, lungo fino a 255 caratteri; memo, testo lungo fino a 64 Kb; numero; data; valuta; logico, che verifica se una condizione è vera o è falsa; numerazione automatica, generato automaticamente. Ogni campo si distingue per determinate caratteristiche, dette proprietà quali, ad esempio, la capiamo le parole dimensione, il formato (ad esempio, una data Default: si può tradurre in italiano la stampante predefinita può può essere espressa con la notazione italiana, con il termine difetto; «valore di anche essere detta di default, gg/mm/aa, o con quella anglosassone che predefault», in informatica, indica perché è quella verso cui sono «valore che assumo implicitamen- indirizzate le stampe, a meno che vede il formato mm/gg/aa), il valore predefinite, in difetto di una diversa istru- l’operatore non ne indichi una to (si può stabilire ad esempio che un campo zione». In modo del tutto analogo, differente. numerico sia, per default, uguale a 1 fino a che l’utente non digiti un numero diverso) e le cosiddette regole di validazione (si può decidere ad esempio che una data sia valida, e quindi accettata e archiviata nel database, solo se compresa tra il 1° gennaio 1990 e il 31 dicembre 2030). Le proprietà non sono fisse, ma dipendono dal tipo di dati ai quali si riferiscono, come vedremo in seguito quando descriveremo le modalità operative dell’uso di Microsoft Access 2010. 6. Il significato di una chiave primaria e dell’indice (syllabus 5.1.2.5; 5.1.2.6) La chiave primaria di una tabella è un campo o una combinazione di campi il cui scopo è di identificare univocamente ogni record: ogni record della tabella, cioè, possiede valori diversi per il campo (o i campi) chiave. Ad esempio, se pensiamo alla tabella dei dati anagrafici delle persone residenti in un certo comune, un campo chiave potrebbe essere il codice fiscale che individua univocamente un cittadino: ad ogni codice fiscale corrisponde un solo cittadino, così come ogni cittadino possiede un codice fiscale personale e diverso da quello degli altri. Si precisa che la presenza del campo chiave in una tabella non è obbligatoria: se lo si considera opportuno, si può anche realizzare una tabella senza chiave primaria. La mancanza della chiave primaria, infatti, come sarà chiarito successivamente, potrebbe essere giustificata dall’elaborazione sequenziale di tutti i record della tabella. In un database la chiave primaria è lo strumento che permette di accedere ai dati di una tabella e di trovare rapidamente i dati ricercati; inoltre, essa evita che in una tabella ci siano record duplicati: la sua impostazione di default, infatti, è «Duplicati non ammessi». Altro compito della chiave è quello di riordinare i dati, in altre parole di indicizzarli: infatti, l’ordine naturale dei record presenti in una tabella è quello seguito in fase di inserimento, operazione che può essere avvenuta in modo disordinato e casuale. L’efficienza della chiave primaria e dell’indice ad essa associato è particolarmente evidente in capiamo le parole tabelle di grandi dimensioni perché, in assenza R andom : casuale; si definisce della memoria centrale del comdi chiave, è indispensabile effettuare la scansiorandom un fenomeno la cui pos- puter ed in particolare a quella ne dei record uno alla volta, dal primo all’ultimo sibilità di verificarsi è regolata volatile, detta memoria Ram registrato in fase di inserimento, fino a trovare soltanto dalle leggi delle proba- (Random access memory) il cui bilità. L’aggettivo random è anche significato letterale è: memoria il dato ricercato. La tabella senza campo chiave, connesso ad una caratteristica ad accesso casuale. infatti, come abbiamo appena visto, presenta i dati in ordine sequenziale, vale a dire secondo la sequenza con la quale sono stati inseriti, mentre la tabella indicizzata consente l’accesso random, ossia casuale, alla tabella, nel senso che si può accedere direttamente ad un suo qualsiasi record: la presenza della chiave primaria permette di trovare e raggiungere direttamente il dato cercato, senza dover scorrere e legge- 260 Modulo 5 • Access re i record precedenti. Per questa sua funzione, la chiave primaria è paragonabile all’indice analitico di un libro, che indica in quale pagina si trova la parola cercata, o allo schedario di una biblioteca, nel quale è indicata l’esatta collocazione di ogni libro. Quando si progetta una tabella assume particolare importanza la scelta di una chiave che sia veramente univoca, per evitare qualsiasi ambiguità: come già si è accennato inizialmente, ad esempio, in un database contenente numerosi dati anagrafici sarà opportuno definire come chiave primaria un codice (come ad esempio quello fiscale) che è sicuramente un dato univoco (nel senso che non esistono due codici uguali), piuttosto che il cognome, che invece si può prestare a casi di omonimia: possono esistere più persone aventi lo stesso cognome. La tabella può anche essere ordinata secondo una chiave diversa da quella primaria: in questo caso definiremo anche altre chiavi, creando altri indici nella tabella su altri campi. Un indice è perciò un campo qualsiasi della tabella in base al quale il DBMS ordina i dati, in modo da rendere più veloce la ricerca in base ai dati presenti in quel campo. Naturalmente, la chiave primaria costituisce un indice di default. Tuttavia, in aggiunta alla chiave primaria, è possibile creare altri indici in funzione dell’uso che si intende fare dei dati contenuti nella tabella. È opportuno creare uno o più indici in presenza di un database costituito da tabelle di grandi dimensioni fra le quali si realizzano numerose relazioni. In questi casi, la ricerca dei dati richiesti dall’utente del database è lenta e può richiedere tempi estremamente lunghi. Con la creazione di indici, invece, le operazioni da parte del DBMS sono semplificate e rendono i tempi di attesa più brevi. 7. Creare relazioni tra tabelle (syllabus 5.1.3.1; 5.1.3.2) Quando si utilizza un database occorre evitare il fenomeno della ridondanza di dati, ossia che in una tabella siano presenti dati duplicati o dati già presenti in altre tabelle. Pertanto, in un database relazionale, come si è già accennato inizialmente, ogni tabella deve contenere una sola tipologia d’informazioni, come, ad esempio i dati anagrafici degli impiegati, oppure gli ordini di vendita da evadere oppure gli articoli a magazzino e così via. Lo schema rappresentato in figura 7 ipotizza che il sistema informativo della gestione ordini sia contenuto principalmente in tre tabelle (CLIENTI, COMMESSE e PARTI), contenenti rispettivamente i dati relativi ai clienti, all’evasione di commesse di vendita e agli articoli presenti in magazzino. CLIENTI COMMESSE PARTI cod nome località num codcli codpar quantità codpar descr. merce giacenza 100 ROSSI BRESCIA 1 150 A25 1 A10 Lyptus 4/4 300 150 BIANCHI MILANO 2 100 A10 3 A25 Ash 4/4 120 170 VERDI MILANO 3 150 B27 4 B27 Red Oak 4/4 45 4 170 A25 2 C05 Cherry 4/4 5 Fig. 7 Esempio di suddivisione di dati in più tabelle La tabella COMMESSE contiene per ogni riga il numero della commessa di vendita (num), il codice del cliente (codcli), il codice della merce a magazzino ordinata (codpar) e la quantità (quantità). Ogni codice (cliente e merce) trova consistenza nelle tabelle CLIENTI e PARTI che riportano i dati anagrafici e la quantità giacente a magazzino. Così facendo, si evitano inutili ripetizioni di dati su più righe: se ad esempio si prendono in esame la prima e la terza commessa, si può notare che esse fanno riferimento allo stesso cliente, ma non ne ripetono il nome (Bianchi), ma solo il codice (150). Analogamente, la prima e la quarta riga memorizzano la stessa merce (Ash 4/4), ma non ripetono la descrizione e la giacenza, riferendosi al solo codice A25. Le singole tabelle così create risultano di dimensioni più ridotte, e sono manutenibili con ragionevoli livelli di facilità e flessibilità. D’altro canto, ed in riferimento al fatto che i dati sono memorizzati in tabelle separate, è necessario un metodo per collegare i dati: per ottenere ciò, bisogna allora stabilire relazioni tra diverse tabelle. Nell’esempio rappresentato nella figura 7, per collegare i dati del cliente 150 alle commesse della prima e della terza riga e per collegare i dati del particolare di magazzino A25 alle commesse della prima e della quarta riga occorre correlare le tre tabelle CLIENTI, COMMESSE e PARTI. UD1 • Comprendere i database 261 Per poter stabilire le relazioni tra tabelle diverse è però necessario che queste abbiano almeno un campo in comune perché, in caso contrario, non sarà possibile correlarle. fai attenzione Per poter stabilire una relazione tra due tabelle è necessario che entrambe contengano un campo dello stesso tipo e della stessa lunghezza; in altre parole, le proprietà devono essere uguali. Nella figura 8 sono mostrate le due relazioni esistenti rispettivamente tra le tabelle CLIENTI e COMMESSE e tra le tabelle PARTI e COMMESSE. La prima relazione è assicurata dalla presenza in ambedue le tabelle dal campo codice cliente, mentre la presenza del campo codice parte garantisce la relazione tra le tabelle COMMESSE e PARTI. Fig. 8 Esempio di relazioni tra diverse tabelle assicurate da campi comuni Ricordiamo che le relazioni rendono possibile consultare un database relazionale utilizzando le query (in italiano interrogazioni), che permettono di estrarre da più tabelle i dati che interessano e di riunirli ed organizzarli come se fossero contenuti in una nuova ed unica tabella «virtuale». Le informazioni così ottenute potranno essere stampate in un resoconto, oppure visualizzate sullo schermo in una tabella unica, anche se i dati che la costituiscono continuano ad essere archiviati, ognuno, in tabelle d’origine separate. seguimi In un database relazionale esistono tre tipi di relazioni: uno-a-uno, uno-a-molti e molti-a-molti. Nel caso della relazione tra le tabelle CLIENTI e COMMESSE la relazione è del tipo uno-a-molti in quanto per ogni record della tabella CLIENTI possono esistere diversi record della tabella COMMESSE: uno stesso cliente può effettuare diversi ordini di vendita. In questo caso, la tabella CLIENTI prende il nome di tabella primaria, mentre la tabella COMMESSE è chiamata tabella correlata. Se invece ipotizziamo che esista un’altra tabella ALTRIDATI contenente le modalità di pagamento e di spedizione per ciascun cliente, la relazione tra le tabelle CLIENTI e ALTRIDATI è del tipo uno-ad-uno in quanto ogni cliente ha una sola coppia di modalità pagamento e spedizione. Il tipo di relazione molti-a-molti si adatta invece al caso di due tabelle PRODOTTI e FORNITORI, laddove per ogni prodotto si possono avere diversi fornitori, ma un fornitore può rifornire diversi prodotti. 8. Mantenere l’integrità delle relazioni tra tabelle (syllabus 5.1.3.3) Nella fase di progettazione del database occorre definirne la struttura, la suddivisione delle tabelle e le regole di validazione, per rendere veloce la consultazione e, soprattutto, per garantirne la consistenza. Da questo punto di vista, particolare attenzione va posta alla definizione delle regole alle quali assoggettare le relazioni tra tabelle, per evitare che le query riportino risultati poco rilevanti o, peggio ancora, incoerenti. In questo contesto, viene denominata integrità referenziale l’insieme di regole e norme da rispettare per svolgere le operazioni di inserimento, variazione e cancellazione di dati tra tabelle correlate. 262 Modulo 5 • Access Ad esempio, riferendoci a quanto descritto a proposito delle tabelle riportate in figura 7, se si vuole inserire un nuovo ordine, bisogna scrivere un nuovo record nella tabella COMMESSE con i seguenti campi: Numero commessa Codice cliente Codice particolare Quantità Se si inserisse un codice cliente inesistente nella tabella CLIENTI, si potrebbe generare un’incoerenza nel database, così come se si inserisse un codice di un particolare inesistente nella tabella PARTI. Per evitare queste due situazioni rischiose, occorre applicare l’integrità referenziale. Analogamente, l’integrità referenziale blocca la variazione errata dei dati in una tabella primaria e necessaria per una tabella correlata: si pensi alla cancellazione del cliente con codice 150 nella tabella CLIENTI che provocherebbe l’inconsistenza di tutti gli ordini relativi a quel cliente. In definitiva, il mantenimento dell’integrità delle relazioni tra tabelle impone che prima di aggiungere un record ad una tabella correlata, bisogna che nella tabella primaria esista già un record corrispondente, così come viene assolutamente vietata sia una modifica della chiave che la cancellazione del record di una tabella primaria, in presenza di record corrispondenti in una tabella correlata. 9. La progettazione di database professionali (syllabus 5.1.4.1; 5.1.4.2; 5.1.4.3) Quando si passa dalla realizzazione di semplici database personali (come ad esempio gestione di appuntamenti, rubrica telefonica, indirizzario ecc.) a database più impegnativi che riguardano ambiti scientifici e settori aziendali di importanza cruciale per un’organizzazione complessa e articolata (quale può essere una società di distribuzione o un ente pubblico di ricerca o una società di sondaggi), bisogna procedere allo sviluppo del database con tecniche e modalità professionali che garantiscano il rispetto delle regole di progettazione e di pianificazione degli interventi. In questi casi, infatti, si assiste all’utilizzo di un insieme di database i cui dati posseggono un alto grado di correlazione e spesso sono sottoposti ad azioni di interscambio allo scopo di ridurre al minimo inutili e dannose ridondanze sia di dati che di operazioni e funzioni sui dati stessi. La realizzazione di tali database complessi è compiuta da specialisti informatici, dotati di altissima professionalità. seguimi Per quanto riguarda la metodologia adottata dagli specialisti per la progettazione di database, tre sono le fasi da seguire: progettazione concettuale, progettazione logica e progettazione fisica. Senza voler entrare nei dettagli di tali fasi (che da sole meriterebbero un intero libro), basti sapere che la progettazione concettuale ha come obiettivo la descrizione formale e completa della realtà da modellizzare, indipendentemente dalle modalità attraverso le quali poi quelle informazioni verranno codificate in un computer. La progettazione logica invece, partendo dai risultati della progettazione concettuale, realizza il cosiddetto modello logico dei dati, consistente nello schema di rappresentazione utilizzato dal sistema di gestione di data base (DBMS) a disposizione. Il modello logico dei dati è un modello intermedio tra la descrizione formale e la descrizione fisicamente adottata dal DBMS e pertanto risulta ancora una rappresentazione dei dati abbastanza indipendente da alcuni dettagli fisici del computer dove verrà successivamente implementato. La terza ed ultima fase, detta della progettazione fisica, consiste infine nel completamento del modello logico con dettagli fisici (organizzazione dei file fisici e logici, chiavi primarie e secondarie ecc.). Una distinzione fondamentale e netta che va fatta tra le persone che operano con i database è quella che divide i progettisti dagli utenti. Questi ultimi, posti naturalmente a diversi livelli, utilizzano per le proprie attività le funzionalità offerte dal DBMS e dalle applicazioni di database e possono essere a loro volta classificati nelle due categorie di utenti finali ed utenti specializzati di database. Gli utenti finali non sono esperti informatici, ma semplici utilizzatori di funzioni predefinite preventivamente realizzate da figure informatiche più specializzate. Essi non interagiscono direttamente con il database, ma accedono ai dati e scrivono anche su di essi attraverso applicazioni ed interfacce (maschere, videate, grafici ecc.) create appositamente per il loro livello. In generale, perciò, gli utenti finali hanno competenza per l’inserimento dei dati, la loro gestione (modifica, cancellazione, stampa ecc.) ed il recupero delle informazioni necessarie a fornire risposte alle interrogazioni richieste in un certo contesto lavorativo. UD1 • Comprendere i database 263 Esiste anche una categoria più evoluta di utente che, sfruttando una certa conoscenza di base informatica ed applicativa e impiegando il linguaggio interattivo per le interrogazioni (query language o QL), è in grado di realizzare autonomamente qualche funzione di interrogazione, di produzione di report di stampa, di maschere video, oltre che di aggiornamento del database. La presenza di utenti specializzati all’interno di un’organizzazione complessa costituisce una risorsa preziosa e allo stesso tempo un potenziale fattore di rischio. Infatti, se da un lato gli utenti specializzati sono in grado di dare autonomamente risposte minimali (in qualche caso anche esaurienti e complete) a bisogni informativi, senza dare luogo a costosi e complicati ricorsi ad interventi di specialisti di database, da un altro punto di vista essi costituiscono un fattore di possibile causa di errori introdotti nel sistema che, seppur inizialmente limitati a specifiche aree di pertinenza, potrebbero nel tempo allargarsi a macchia d’olio e causare imprevedibili perdite di dati e in qualche caso distruzione generale del patrimonio informativo dell’intera organizzazione. A questo proposito, è compito precipuo di un’altra figura professionale, l’amministratore del database (o DBA cioè Data Base Administrator) svolgere la supervisione della progettazione, del controllo e dell’amministrazione del database. Il DBA, riproponendo quanto si accennava poc’anzi, è anche un mediatore tra l’esigenza di dare spazio agli utenti evoluti e specializzati per creare in periferia funzioni personalizzate di accesso al database e la garanzia del controllo centralizzato sui dati. L’amministrazione di database (che in qualche caso è affidata a più di una persona) prevede una conoscenza approfondita dei linguaggi offerti dal DBMS e riguarda anche l’intervento per supportare l’utenza del database nei casi in cui la situazione lo richieda. seguimi I linguaggi adottati dal DBMS sono molteplici e ciascuno con una sfera di competenza ben delineata: • DDL (Data Definition Language): si tratta di un linguaggio utile per definire i dati presenti nelle tabelle, con le specifiche delle chiavi, delle proprietà dei campi, delle relazioni tra i dati, delle viste logiche ecc.; • DML (Data Manipolation Language): è un linguaggio che serve ad elaborare i dati del database, ad esempio per inserire nuovi record, variare record preesistenti, cancellare record, visualizzarli ecc.; • QL (Query Language): è il linguaggio adottato per realizzare le interrogazioni, ovvero le procedure interattive utili per fornire risposte esaurienti a richieste provenienti dagli utenti finali. Attraverso questo linguaggio si possono effettuare operazioni di data retrieval e di accesso ai dati; • DCL (Data Control Language): questo linguaggio serve ad attribuire privilegi di accesso ed autorizzazione al database. Come si è detto, il Data Base Administrator si interessa della progettazione del database, che non riguarda la sola fase iniziale di realizzazione di un database aziendale, ma che accompagna tutta la sua vita. È un’attività ricorrente, infatti, la modifica della struttura logica e fisica dello schema del database, in funzione di nuove esigenze degli utenti o di nuove normative obbligatorie da ottemperare o comunque di esigenze esterne. Ancora, si ricorda che spesso capita che nuove applicazioni software, sviluppate per coprire nuove funzionalità e che elaborano dati presenti nel database, richiedano modifiche alla struttura generale del suo schema logico o fisico. In questo contesto, il DBA è responsabile della progettazione e di qualsiasi modifica che riguardi il modello logico e fisico del database, con particolare riferimento al mantenimento di alti gradi di prestazione (performance) e di affidabilità dell’intero sistema di database. Un altro aspetto dei database che riveste particolare importanza e criticità riguarda la sicurezza dei dati ovvero la protezione del database dall’intervento di utenti non autorizzati. Talvolta i giornali hanno dato notizia di attacchi da parte dei pirati informatici (hacker) al sistema informativo del Ministero della Difesa USA o di una grande Banca Svizzera che hanno portato all’inaffidabilità di parte dei dati del loro database ed al mancato utilizzo dei loro siti Internet. Eventi del genere portano alla ribalta la necessità che un database sia protetto con opportune tecniche e metodiche al fine di prevenire accessi non consentiti da parte di utenti (interni o esterni) le cui azioni, talvolta anche dolose, possano provocare inaffidabilità e mancata integrità del sistema informativo. La sicurezza del database è garantita dal DBMS attraverso un sistema di gestione delle autorizzazioni agli accessi ai dati. Si tratta di un compito affidato anch’esso al Data Base Administrator che assegna a ciascun utente autorizzato un identificativo personale (user-id) o di gruppo ed una password. Pertanto attraverso la coppia user-id e password l’utente ha l’autorizzazione non solo all’accesso al sistema, ma anche alle singole funzioni di accesso ai dati. Per semplificare, è possibile che l’utente Pippo possa leggere 264 Modulo 5 • Access la tabella Clienti, ma non la tabella Fornitori. Questa cosa è garantita attraverso l’attribuzione (sempre da parte del DBA) ad ogni oggetto (tabella, maschera, query, report e così via) della cosiddetta lista di autorizzazione, contenente la lista degli utenti (o dei gruppi di utenti) autorizzati ed eventualmente i vincoli operativi (sola lettura, lettura/scrittura ecc.). 10. Operazioni di salvataggio e di ripristino del database (syllabus 5.1.4.4) Un database costituisce per qualsiasi azienda, a prescindere dalle sue dimensioni, il patrimonio informativo più prezioso, qualche volta più delle stesse merci prodotte o distribuite. È quindi ovvio che molte energie all’interno del Centro di Elaborazione Dati aziendale sono spese per le operazioni atte a preservare il contenuto del database da eventi criminosi o fortuiti che ne alterino il contenuto. Si ricorda che gli eventi più comuni che possono minacciare seriamente l’affidabilità e la permanenza di un database sono vari: incendi, furti e manomissioni dolose o colpose dei dispositivi di memorizzazione (harddisk, CD-ROM, nastri magnetici). Occorre poi aggiungere anche episodi di malfunzionamento dei dispositivi quali il controller di periferica, il supporto magnetico (disco) o altro che causano il cosiddetto crash (rottura) del supporto con conseguente perdita di tutti i dati su di esso memorizzati. Oltre ai citati eventi negativi un’altra (purtroppo) ricorrente azione che provoca come conseguenza la perdita di parte del contenuto del database è l’errata operatività da parte dell’utenza: si pensi alla cancellazione di una transazione o il richiamo di una procedura in un momento sbagliato della giornata o l’annullamento (errato) di una prenotazione aerea. Questi episodi di per sé apparentemente insignificanti provocano effetti a catena che nel corso delle ore possono provocare conseguenze che minano la credibilità dell’intero sistema. Per impedire che tutti questi eventi riducano l’affidabilità del database l’amministratore deve pianificare il salvataggio (backup) dei dati: copia dei dati memorizzati nel database su supporti di memoria secondaria (quali nastri magnetici, CD ROM, DVD, dischi magnetici rimovibili, cassette, zip-disk ecc.) in tempi precisi e con intervalli regolari, quanto più prossimi fra loro. Il backup può riguardare sia l’intero sistema che parte di esso. Nel primo caso, si tratta di salvare su supporti esterni tutto il database e ciò richiederà presumibilmente un sistema dedicato a tale operazione (nessun utente può svolgere operazioni di accesso al database) ed il ricorso a supporti capienti quali ad esempio nastri magnetici o cassette magnetiche. Nel caso invece di backup differenziale, che riguardi cioè soltanto le nuove informazioni aggiunte al database rispetto all’ultimo backup completo, i tempi di copia saranno più limitati e si potranno utilizzare supporti anche più ridotti (CD-ROM, DVD ecc.). A prescindere comunque dal tipo di backup da eseguire, si è accennato prima che il Data Base Administrator deve fissare la periodicità da rispettare per i salvataggi: quanto più vicini fra loro sono tali momenti tanto maggiore è il grado di sicurezza del database. Normalmente in ambito aziendale il salvataggio va eseguito quotidianamente, negli orari notturni, quando il sistema non è utilizzato dagli utenti finali. Nel piano di salvataggio elaborato dal Data Base Administrator viene individuato l’addetto al salvataggio cui è assegnato un gruppo di supporti (ad esempio nastri magnetici) su ciascuno dei quali è affissa l’etichetta del giorno. In questo modo è assicurata la «fotografia del database» in diversi giorni della settimana ed è possibile ricostruire una situazione passata in un determinato giorno delle ultime settimane. Naturalmente, è sempre compito del DBA provvedere a quello che viene definito piano di ripristino (restore) o recupero del database consistente nel riportare sulla memoria di massa (ovvero sugli hard-disk del sistema) il database precedentemente salvato. È chiaro che in caso di guasto o evento fortuito e accidentale avvenuto sul database il DBA provvede a coordinare le azioni per recuperare il contenuto del database, partendo dall’ultimo backup e lanciando la procedura di ripristino prevista dal DBMS che dovrà provvedere a ricostruire tutte le operazioni eseguite dopo l’ultimo salvataggio. UD1 • Comprendere i database 265 Verifiche ed esercizi unità didattica 1 domande vero/falso Per ciascuna delle seguenti affermazioni, indicare se è vera o falsa v f 7) La ridondanza è una caratteristica del database relazionale 8) In un database l’accesso ai dati è regolato dalle autorizzazioni concesse dall’amministra tore del database 9) L’integrità referenziale è l’insieme delle regole da rispettare per mantenere coerenti le relazioni tra i dati 10)Un vantaggio di una relazione consiste anche nel mantenere ridotte le dimensioni delle tabelle 1) Uno dei primi settori ad introdurre l’uso degli elaboratori elettronici per memorizzare grandi quantità di dati è stato quello manifatturiero 2) Tra i compiti di un sistema informatico sono comprese le funzioni di raccolta, organizza zione ed archiviazione dei dati 3) La chiave primaria è la password per accedere al database 4) DBMS è la sigla che identifica i programmi per la gestione dei fogli elettronici 5) Un database vuoto è detto inconsistente 6) L’accesso ad una tabella indicizzata è possibile solo in modo sequenziale domande a risposta multipla Per ciascuna delle seguenti domande indicare la risposta scegliendo una fra quelle proposte 1) Quali dati possono essere archiviati in un database? a) Tutti b) Solo dati numerici c) Solo dati testuali 2) Quale tra i seguenti non è un tipo di campo di Access? a) Memo b) Logico c) Statistico 3) In un database relazionale due tabelle correlate devono avere: a) Un campo in comune b) Lo stesso nome c) La proprietà In relazione con attivata dal menu contestuale 266 Modulo 5 • Access 4) I metadati sono: a) La metà di un’informazione b) La descrizione della struttura del database c) Dati di tipo metafisico 5) Un campo di tipo Testo può essere lungo al massimo: a) 255 caratteri b) 65.536 caratteri c) Ha lunghezza illimitata 6) In un record di una tabella del database sono presenti: a) Solo i campi che contengono dati b) Tutti i campi c) Non sono presenti campi 7) Quale delle seguenti caratteristiche presenta un database? a) Riduzione delle ridondanze b) Facilità nell’inserimento dei dati c) Essere governato da utenti specializzati 8) La chiave primaria è un campo di una tabella di un database: a) Gerarchico b) Reticolare c) Relazionale 9) Per creare una relazione tra due tabelle, occorre che all’interno di esse vi sia: a) Almeno un campo in comune b) Almeno una chiave primaria c) Almeno un campo con indice 10)In un database relazionale i dati sono memorizzati: a) Nei file b) Nelle tabelle c) Nelle query domande a risposta libera Per ciascuna delle seguenti domande, fornire una risposta sintetica 1) Descrivi le differenze tra memorizzazione tradizionale dei dati e memorizzazione tramite database. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... 2) Descrivi la differenza tra database gerarchico e database relazionale. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... UD1 • Comprendere i database 267 3) Descrivi la differenza tra dati e metadati. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... 4) Descrivi alcune proprietà attribuite ai campi. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... 5) Elenca i compiti di un amministratore di database. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... 6) Descrivi come si può evitare la ridondanza, ossia l’eccesso di dati, in un database. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... 7) Definisci la tabella, il record ed il campo, specificando anche le relazioni tra essi. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... 8) Descrivi le differenze tra un database e un foglio elettronico. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... 9) Descrivi le funzioni delle procedure di salvataggio e di ripristino di un database. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... 10) Descrivi le differenze tra utenti finali e utenti specializzati di database. ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... ...................................................................................................................................................................................................... 268 Modulo 5 • Access Esercitazioni pratiche Verifica n. 1 Con riferimento ad un database relazionale per memorizzare i dati relativi agli alunni di una scuola media, allo scopo di conoscere la composizione delle classi e l’elenco degli studenti per zona di residenza e per sesso: 1) indicare il numero ed il nome delle possibili tabelle; 2) elencare per ogni tabella i nomi dei campi; 3) specificare per ogni campo il tipo e la dimensione; 4) mettere per iscritto le proposte di soluzione. Verifica n. 2 Verifica n. 3 Verifica n. 4 Verifica n. 5 Per ogni tabella indicata nella verifica n. 1 specificare possibili chiavi primarie ed indici. Specificare possibili regole di integrità referenziale dei dati delle tabelle proposte nella verifica n. 1 Avanzare proposte di ipotetiche relazioni tra le tabelle proposte nella verifica n. 1, accertandosi che ci siano i presupposti per poter realizzare le dette relazioni. Indicare il numero e le specifiche funzionali delle query da realizzare per rispondere alle richieste di interrogazione indicate nella verifica n. 1. UD1 • Comprendere i database 269