04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 3 Modulo 5 Basi di dati Access Concetti fondamentali Il database 5.1.1.1 Il database, o anche base di dati, è un archivio elettronico, dotato di un programma di interfaccia che facilita: • la registrazione; • la ricerca; • l’aggiornamento; • l’eliminazione dei dati, ossia tutte le operazioni utili per la gestione dell’archivio. Il database relazionale è il tipo di database attualmente più diffuso grazie alla sua flessibilità e alla maggiore facilità d’uso. A questo tipo di database faremo riferimento nel resto della trattazione. 5.1.1.2 Anche se dato e informazione sono spesso utilizzati come sinonimi, dal punto di vista informativo hanno un significato profondamente diverso. Per dato si intende una rappresentazione originaria e non interpretata di un evento o di un oggetto. Dato può essere quindi la ragione sociale di un cliente, il prezzo di un prodotto, il cognome di un dipendente. L’insieme di uno o più dati, opportunamente correlati e interpretati in un certo contesto, costituisce un’informazione. Più dati, quindi, vengono trasformati in una o più informazioni mediante un processo elaborativo. 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 4 Patente Europea del computer Modulo 5 In definitiva, i dati costituiscono la materia prima con la quale vengono costruite le informazioni. È inoltre importante osservare che un’informazione è tale soltanto in funzione del suo destinatario e del momento e del luogo del suo utilizzo. Per esempio il totale di una fattura è un’informazione per l’Ufficio Fatturazione, ma è ancora un dato, anche se di tipo sintetico, per l’Ufficio Marketing interessato a elaborazioni di tipo statistico. In questo contesto il dato possiede come caratteristica fondamentale quella dell’oggettività, mentre l’informazione è intrinsecamente soggettiva, in quanto destinata a un certo utente, in un determinato momento, per un certo scopo. 5.1.1.3 Un esempio di database di facile comprensione è un’ipotetica rubrica del telefono. Questa è composta dall’insieme di dati, nome, cognome, numero di telefono di una serie di persone, organizzati in una struttura, definita tabella (vedi figura 5.1). Figura 5.1 La struttura di una tabella. In tale schema sono indicati i dati registrati; ogni singolo dato costituisce un campo; nell’esempio proposto i campi utilizzati sono “cognome”, “telefono personale”, “azienda”, “incarico”. Nella tabella, alla quale è associato lo schema, questi nomi saranno le etichette delle colonne, mentre sulle varie righe saranno inseriti il cognome, il telefono personale, l’azienda, l’incarico di ogni interlocutore presente nella rubrica; l’insieme di questi dati prende il nome di record. Di conseguenza l’insieme di record costituisce la tabella. Come vedremo in seguito un insieme di tabelle opportunamente correlate forma il database. 4 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 5 Sezione 1: Comprendere i database Esempi di database 5.1.1.4 Nell’esempio abbiamo visto un database molto semplice e di dimensioni limitate. Ma il database è la struttura per la realizzazione di archivi elettronici di grandi dimensioni quali: • INPS, Istituto Nazionale Previdenza Sociale, che registra i dati degli assistiti a livello nazionale; • Anagrafe Tributaria, che riporta le posizioni nei vari anni di tutti i contribuenti italiani; • anagrafi comunali, con i dati dei cittadini; • cartelle cliniche dei pazienti delle strutture sanitarie; • sistemi bancari, per la gestione dei conti correnti dei clienti; • sistemi di prenotazione e gestione dei voli delle compagnie aeree. Tutte queste banche dati sono caratterizzate dalla presenza di centinaia di migliaia o di milioni di record. 5 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 6 Patente Europea del computer Modulo 5 Organizzazione di un database Tabelle 5.1.2.1 5.1.2.2 5.1.2.3 Abbiamo già visto come il database sia costituito da un insieme di tabelle. È opportuno che ognuna di queste tabelle contenga dati relativi a un unico argomento. Per esempio, in un database che riguarda una rubrica telefonica a uso ufficio potrai avere una tabella Interlocutori, con i dati delle persone con le quali sei in contatto, e una tabella Aziende, che riporta i dati delle aziende a cui appartengono gli interlocutori. Nella definizione della struttura di queste tabelle, devi definire quali campi vuoi inserire. È importante che ogni campo contenga un dato unitario. Un dato è unitario o no in funzione delle elaborazioni che successivamente vorrai fare. Per esempio il Cognome e Nome di una persona potrebbe essere un solo campo, se non hai bisogno di separare i due dati (per esempio li utilizzi esclusivamente per identificare la persona) o due campi distinti, se vuoi poter effettuare facilmente ricerche separate su nome e cognome. Ricordati che nel dubbio è meglio utilizzare campi separati che consentono di semplificare, in caso di necessità, le operazioni di elaborazione. Ogni campo che compone la tabella viene generato con lo scopo di contenere un tipo specifico di dato. Nella creazione di una tabella devi, quindi, non solo attribuire un’etichetta a ogni campo, cioè un nome che lo identifichi, ma anche indicare le caratteristiche del campo stesso. La prima caratteristica che devi definire è il tipo di dato: • • • • • • • 5.1.2.4 testo; memo (dato testuale di maggiori dimensioni); numerico; data/ora; valuta; contatore (campo numerico che si incrementa in modo automatico); sì/no. A ogni campo devi inoltre associare ulteriori proprietà, che ne completano le caratteristiche, quali: • dimensione del campo (numero di caratteri o di cifre che compongono il campo); 6 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 7 Sezione 1: Comprendere i database • formato (per esempio per una data se viene usato il formato gg/mm/aaaa); • valore predefinito (valore di default, valore che viene inserito automaticamente, e che può essere modificato in caso di necessità); • valido se; • messaggio d’errore; • richiesto; • consenti lunghezza zero; • indicizzato, compressione Unicode. Le differenze fra le diverse tipologie di dati e i loro attributi verranno prese in esame in seguito, quando vedremo come definire la struttura di una tabella. Chiave primaria e indici 5.1.2.5 In ogni tabella è opportuno poter distinguere ogni singolo record da qualsiasi altro, avere cioè un valore in uno o più campi che lo identifichi in modo univoco. Tale valore prende il nome di chiave primaria e può essere costituito da un unico campo o dalla combinazione di più campi, nel caso in cui un solo campo non fosse in grado di garantire la condizione di corrispondenza biunivoca, ossia di non duplicazione. La chiave primaria, quindi, può essere definita come il campo o l’insieme di campi che identificano in modo univoco un record. Esempi di chiave primaria sono il nome di un comune in un database che dà i prefissi telefonici o l’abbinamento del cognome e nome sul database registro studenti di una scuola. Se non riesci a risolvere il problema, neanche abbinando più campi, o perché non è esclusa la replicabilità della coppia (o anche di associazioni di ulteriori altri campi), o perché preferisci avere una chiave di ricerca più sintetica, e quindi data da un solo campo, puoi creare ad hoc un codice identificativo. Un esempio è costituito dal numero di matricola per identificare uno studente universitario, chiave primaria necessaria in quanto potrebbero essere iscritti all’università due studenti con lo stesso cognome e nome. 7 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 8 Patente Europea del computer Modulo 5 Questa operazione viene compiuta automaticamente dal sistema nel caso non venga indicata una chiave primaria nella creazione di una tabella. Il sistema ti chiede comunque una conferma prima di rendere effettiva l’operazione. In questo caso, il tipo di campo generato è di tipo contatore, un campo numerico che si incrementa automaticamente a ogni inserimento di un nuovo record. 5.1.2.6 Caratteristica fondamentale, oltre alla non duplicabilità, affinché un campo possa svolgere il ruolo di chiave di ricerca primaria, è l’associazione a un indice. Tale attributo non riguarda però solo il campo chiave primaria, ma puoi impostarlo per tutti i campi che presupponi vengano interrogati con un’alta frequenza. Questa caratteristica, infatti, permette la ricerca random dei dati, ossia l’individuazione immediata dei dati richiesti. Per i campi non associati a indice, al contrario, è possibile solo la ricerca di tipo sequenziale, che allunga i tempi di risposta del sistema. L’indice del database funziona logicamente come l’indice di un libro, che permette di sapere in che pagina si trova il capitolo che cerchi, senza dover scorrere tutte le pagine. Inoltre l’associazione a un indice di un campo velocizza l’operazione di ordinamento dei record, secondo tale campo. L’associazione a indice complica la struttura del database, per cui devi valutare campo per campo quali associare a indice e quali invece no. Oltre all’associazione a indice, scegli se il campo può avere valori ripetuti o no. Nel caso di un campo utilizzato come chiave di ricerca primaria, l’opzione che non prevede duplicati viene selezionata automaticamente dal sistema e non può essere modificata. 8 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 9 Sezione 1: Comprendere i database Relazioni Significato delle relazioni 5.1.3.1 Il database relazionale si presenta all’utente come un insieme di tabelle correlate mediante relazioni tra campi (vedi figura 5.2). Negli schemi delle tabelle sono riportate in grassetto le chiavi di ricerca primarie. Figura 5.2 Esempio di relazione fra tabelle. Le relazioni consentono di costruire insiemi di dati (record logici), aggregando campi appartenenti a tabelle diverse. Il database della rubrica telefonica, preso come esempio, può essere ampliato mediante una seconda tabella; a quella già descritta Interlocutori si aggiunge una nuova tabella Aziende. Tale suddivisione risulta utile nell’ipotesi che possano esserci più interlocutori appartenenti alla stessa azienda. Questa nuova struttura ti permette di inserire i dati relativi all’azienda una sola volta per tutti gli interlocutori e di richiamare i dati delle aziende mediante la relazione fra le due tabelle. In questo modo eviti di ripetere più volte gli stessi dati all’interno del database, operazione che sarebbe indispensabile se esistesse una sola tabella Interlocutori. Le ridondanze non solo rappresentano un onere di registrazione aggiuntivo, ma costituiscono anche un problema ulteriore per eventuali aggiornamenti. In termini generali, sono possibili tre diversi tipi di relazione: • relazione uno a uno, a un record di una tabella corrisponde, al massimo, un solo record di un’altra tabella; • relazione uno a molti, a un record di una tabella corrispondono più record di un’altra tabella, non è vero il contrario; • relazione molti a molti, a un record della prima tabella corrispondono più record della seconda tabella ed è vero il contrario. 9 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 10 Patente Europea del computer Modulo 5 La relazione uno a uno non è strettamente indispensabile, perché i dati della seconda tabella potrebbero essere inseriti, senza problemi, nella prima tabella. Questa relazione può risultare però utile, quando devi gestire dati particolari per un numero limitato di record o dati che hanno una rilevanza limitata nel tempo. La relazione uno a molti, invece, come è già stato illustrato nell’esempio precedente, permette di risolvere i problemi di ridondanza di dati. Sarebbe invece necessaria una relazione molti a molti nel caso un interlocutore fosse consulente per più aziende e che ogni azienda avesse più consulenti. Per rappresentare una relazione molti a molti è necessario creare una terza tabella, in genere denominata tabella di collegamento, che serve a suddividere la relazione molti a molti in due relazioni uno a molti. Nella terza tabella viene inserita la chiave primaria di ognuna delle tabelle, registrando così ogni occorrenza o istanza della relazione. Le relazioni molti a molti sono trattate nel modulo ECDL Basi di dati Avanzato. 5.1.3.2 5.1.3.3 10 Come puoi vedere dalle figure precedenti, la relazione viene costruita legando un campo univoco di una tabella (per esempio, la chiave di ricerca primaria Azienda della tabella Aziende della figura 5.2) con un campo di un’altra tabella (nell’esempio il campo Azienda della tabella Interlocutori). Il record logico viene costruito associando il record della prima tabella con tutti i record della seconda tabella che hanno lo stesso valore nel campo Azienda. Per esempio associo i dati del record della tabella Aziende che ha nel campo Azienda il dato “Mondadori”, con i dati dei record della tabella Interlocutori, che hanno nel campo Azienda lo stesso dato. Quando generi delle relazioni è tuo interesse che venga mantenuta l’integrità delle relazioni stesse. Per esempio potresti avere la necessità di impedire che venga registrato un interlocutore di un’azienda che non è ancora stata inserita in archivio, o che venga cancellata un’azienda con agganciati una serie di interlocutori. Puoi attivare questa serie di controlli indicando al sistema di mantenere l’integrità referenziale. Fai comunque attenzione che questi controlli salvaguardano il tuo database da una serie di inconvenienti, ma ti impongono dei vincoli che potrebbero mettere in difficoltà la gestione del sistema. È quindi opportuno progettare attentamente sia le relazioni fra tabelle, sia i controlli su di esse, al fine di ottenere un database efficiente e versatile. 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 11 Sezione 1: Comprendere i database L’integrità referenziale è un sistema di regole utilizzate a tale scopo: controlla che le relazioni tra i record delle tabelle correlate siano valide e impedisce l’eliminazione o la modifica dei dati coinvolti nella relazione. Puoi impostare l’integrità referenziale quando vengono soddisfatte tutte le seguenti condizioni: • il campo corrispondente della tabella primaria è una chiave primaria o dispone di un indice univoco; • i campi correlati contengono lo stesso tipo di dati salvo quando: • un campo Contatore può essere correlato a un campo Numerico la cui proprietà Dimensione campo sia impostata a Intero lungo; • un campo Contatore la cui proprietà Dimensione campo sia impostata a ID replica, può essere correlato a un campo Numerico la cui proprietà Dimensione campo sia anch’essa impostata a ID replica; • entrambe le tabelle appartengono allo stesso database di Microsoft Access. 11 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 12 Patente Europea del computer Modulo 5 Operatività Progettazione, creazione, gestione 5.1.4.1 Un database Ordini, come quello riportato in figura 5.3, ha una struttura molto semplice ed è costituito da tre tabelle. La progettazione, creazione e gestione di questo database non necessitano di competenze informatiche specifiche, e quindi il tutto è alla portata di un utente finale. Figura 5.3 Esempio di database di tre tabelle. Si è però visto che il database relazionale può essere utilizzato per la realizzazione di grandi banche dati, contenenti anche milioni di record, e formate da centinaia o anche migliaia di tabelle correlate. In questo caso, la progettazione e creazione del database devono essere affidate a specialisti, con elevate competenze in questo campo. È loro compito: • definire le specifiche del database: • i dati da inserire; • le tabelle in cui inserire i dati; • le relazioni tra le tabelle; • le interrogazioni per estrarre informazioni sulla base di specifiche esigenze; • creare il database e sottoporlo a test; • creare le interfacce verso gli utenti, in modo da facilitarne l’utilizzo. Sono, invece, compito degli utenti del database: 5.1.4.2 12 • l’inserimento dei dati; • il loro aggiornamento; • l’estrazione delle informazioni volute. 04_Mod5-Modulo 5 14-07-2009 16:12 Pagina 13 Sezione 1: Comprendere i database Queste operazioni sono facilitate dalle interfacce realizzate dagli specialisti, in modo che le operazioni di gestione del database possano essere effettuate da utenti, anche privi di competente specifiche sui database. 5.1.4.3 Quando si è in presenza di database con strutture complesse e costituite da un elevato numero di tabelle e di dati, non è necessario che tutti gli utenti debbano operare su tutto il database. Pensa, per esempio, alla banca dati del sistema informativo dell’università; i vari uffici amministrativi sono interessati solo a una parte di questi dati: • le Segreterie Studenti alle carriere degli iscritti all’Università; • gli Uffici Contabili ai dati relativi alla gestione finanziaria; • gli Uffici del Personale alla gestione delle carriere dei dipendenti. Diventa, quindi, opportuno che ogni utente abbia accesso solo ai dati ai quali è interessato nella sua attività. Inoltre l’accesso può essere con autorizzazione a visionare e aggiornare i dati, o limitato alla loro visione, in relazione all’attività svolta dall’utente. La gestione delle autorizzazioni a quali dati accedere, e con quale modalità (aggiornamento o sola lettura) è affidata a una figura professionale con competenze specifiche, l’Amministratore di Sistema (Database Administrator). 5.1.4.4 La banca dati aziendali costituisce un patrimonio importante, la cui integrità condiziona l’andamento di tutta l’azienda. Durante la normale gestione delle attività si possono verificare inconvenienti, sia di natura hardware sia software, che causano gravi errori al database, errori che ne compromettono la validità. È compito dell’Amministratore di Sistema predisporre e mettere in atto gli strumenti che permettono il recupero o la ricostruzione del database, quando si verificano tali problemi. 13