Versione personale di Studente Ebook01 Powered by AULA01 Copyright ã 2009-2010 Talento s.r.l. Viale Sarca 336/F Edificio Sedici 20126 Milano Edizione realizzata per SkillOnLine s.r.l. ad uso esclusivo nell’ambito del progetto Aula 01. Tutti i diritti sono riservati. È vietata qualsiasi forma di riproduzione, anche parziale, di questo libro. Fermo restando l’esonero di ogni responsabilità, Talento s.r.l. opera in modo da garantire la massima accuratezza nella produzione di questo libro. Si prega di notificare immediatamente a Talento s.r.l. qualsiasi errore o imprecisione rilevata all’interno del testo. Microsoft, Windows, Windows XP e Windows Vista sono marchi registrati da Microsoft Corporation. Altri nomi e marchi citati nel testo sono generalmente depositati o registrati dalle rispettive case produttrici. POWERED BY AULA01 Sommario SOMMARIO Sommario .............................................................................................................................................. I Guida all’uso ........................................................................................................................................ V Destinatari del libro.............................................................................................................................. V Convenzioni di testo usate nel libro ..................................................................................................... V LEZIONE 1 - CONCETTI DI BASE ...........................................................................................1 Database ................................................................................................................................................ 1 Sistemi informativi e sistemi informatici .............................................................................................. 1 Dati e Informazioni ............................................................................................................................... 2 I database nella vita quotidiana ............................................................................................................. 3 Evoluzione dei database ........................................................................................................................ 3 Database relazionali .............................................................................................................................. 5 Database e sistemi per la loro gestione ................................................................................................. 5 Vantaggi del database ........................................................................................................................... 6 Progettare un database .......................................................................................................................... 6 Fase 1 - Identificare lo scopo del database............................................................................................ 7 Fase 2 - Catalogare i dati esistenti e definire gli output richiesti .......................................................... 7 Fase 3 - Progettare le tabelle ................................................................................................................. 8 Fase 4 - Suddividere i campi ................................................................................................................. 9 Fase 5 - Identificare la chiave primaria di ogni tabella ......................................................................... 9 Fase 6 - Disegnare le relazioni fra le tabelle ....................................................................................... 10 Fase 7 - Normalizzare i dati ................................................................................................................ 12 Fase 8 - Rivedere e finalizzare il progetto .......................................................................................... 15 Figure professionali ............................................................................................................................ 15 LEZIONE 2 - INTRODUZIONE AD ACCESS 2007 ..................................................................19 Per iniziare .......................................................................................................................................... 19 Creare un database vuoto .................................................................................................................... 21 Aprire un database esistente................................................................................................................ 22 La finestra di Access 2007 .................................................................................................................. 23 La barra multifunzione ........................................................................................................................ 24 Il pulsante Microsoft Office ................................................................................................................ 26 La barra di accesso rapido................................................................................................................... 28 I menu contestuali ............................................................................................................................... 29 Le finestre di dialogo .......................................................................................................................... 30 I riquadri Attività ................................................................................................................................ 30 Utilizzo dei tasti di scelta rapida ......................................................................................................... 31 Ulteriori informazioni sui tasti di scelta .............................................................................................. 33 Utilizzo della barra multifunzione con la tastiera ............................................................................... 33 Ulteriori info sulla barra multifunzione .............................................................................................. 34 Gli oggetti del database....................................................................................................................... 35 Il riquadro di spostamento .................................................................................................................. 35 Aprire un oggetto database ................................................................................................................. 37 La Guida di Access 2007 .................................................................................................................... 37 Il Sommario ........................................................................................................................................ 39 La Ricerca libera ................................................................................................................................. 40 Info sulla rimozione dell’Assistente di Office .................................................................................... 40 LEZIONE 3 - TABELLE ........................................................................................................43 Nuovi database .................................................................................................................................... 43 La struttura delle tabelle...................................................................................................................... 43 Creare una tabella in Visualizzazione Foglio dati............................................................................... 44 Copyright ã 2009-2010 di Talento s.r.l. I Sommario VERSIONE PERSONALE DI STUDENTE EBOOK01 Creare una tabella da un modello ....................................................................................................... 46 Creare una tabella in Visualizzazione Struttura ................................................................................. 47 Nomi campo ....................................................................................................................................... 48 Tipi dati .............................................................................................................................................. 49 Descrizioni campi............................................................................................................................... 51 Chiave primaria .................................................................................................................................. 51 Salvare una nuova tabella ................................................................................................................... 52 Le proprietà dei campi........................................................................................................................ 53 L'ampiezza dei campi ......................................................................................................................... 54 Formati numerici ................................................................................................................................ 55 Formati Data/Ora ............................................................................................................................... 56 Formati Sì/No ..................................................................................................................................... 57 Valori standard ................................................................................................................................... 58 Regole di convalida e messaggi di errore ........................................................................................... 59 Maschere di input ............................................................................................................................... 60 Cambiare il tipo di visualizzazione .................................................................................................... 62 Conseguenze della modifica al tipo di dati......................................................................................... 63 LEZIONE 4 - UTILIZZARE LE TABELLE ............................................................................... 67 Foglio dati .......................................................................................................................................... 67 Campi ................................................................................................................................................. 67 Record ................................................................................................................................................ 68 Muoversi tra i record di una tabella.................................................................................................... 68 Selezionare record di una tabella........................................................................................................ 69 Modificare record in una tabella ........................................................................................................ 70 Salvare record..................................................................................................................................... 70 Eliminare record ................................................................................................................................. 71 Utilizzare il comando Annulla ........................................................................................................... 71 Altezza righe & larghezza colonne .................................................................................................... 72 Attributi carattere ............................................................................................................................... 73 L’aspetto delle celle ........................................................................................................................... 74 Selezionare e spostare colonne ........................................................................................................... 75 Nascondere e visualizzare colonne..................................................................................................... 75 Bloccare una colonna ......................................................................................................................... 76 Inserire una nuova colonna (campo) .................................................................................................. 77 Eliminare una colonna (campo) ......................................................................................................... 78 Visualizzare totali di colonna in una tabella....................................................................................... 79 Salvare e chiudere una tabella ............................................................................................................ 80 Eliminare una tabella dal database ..................................................................................................... 80 LEZIONE 5 - ATTIVITÀ COMUNI ......................................................................................... 83 L'ordinamento dei record ................................................................................................................... 83 Ordinare i record con chiave multipla ................................................................................................ 84 Trovare record specifici ..................................................................................................................... 85 Ricerca e caratteri jolly ...................................................................................................................... 86 Le sostituzioni .................................................................................................................................... 87 Utilizzare un filtro predefinito............................................................................................................ 88 Rimuovere e applicare un filtro .......................................................................................................... 90 Utilizzare il filtro in base a selezione ................................................................................................. 91 Utilizzare il filtro in base a maschera ................................................................................................. 92 Utilizzare un filtro avanzato ............................................................................................................... 93 LEZIONE 6 - RELAZIONI & INDICI ..................................................................................... 97 Le tabelle correlate ............................................................................................................................. 97 Le relazioni......................................................................................................................................... 97 L'integrità referenziale ....................................................................................................................... 99 Nuove tabelle nella finestra Relazioni...............................................................................................100 Cancellare una relazione ...................................................................................................................101 Gli indici............................................................................................................................................101 II Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 Sommario Gli indici a campo singolo ................................................................................................................ 102 Gli indici su più campi ...................................................................................................................... 103 Eliminare un indice ........................................................................................................................... 104 La chiave primaria su più campi ....................................................................................................... 104 LEZIONE 7 - QUERY ..........................................................................................................109 Query e recordset .............................................................................................................................. 109 Creazione guidata query semplice .................................................................................................... 110 Creazione di una query in Visualizzazione struttura......................................................................... 111 Rimuovere campi da una query ........................................................................................................ 112 Aprire una query ............................................................................................................................... 112 Aggiungere una tabella ad una query................................................................................................ 113 Il collegamento di tabelle in una query ............................................................................................. 113 Eseguire una query............................................................................................................................ 115 Ordinare i risultati di una query ........................................................................................................ 115 Spostare campi in una query ............................................................................................................. 116 I criteri nelle query ............................................................................................................................ 117 Nascondere un campo in una query .................................................................................................. 118 Operatori di confronto....................................................................................................................... 118 La condizione And ............................................................................................................................ 120 Condizione Or ................................................................................................................................... 121 Operatore Between ... And ................................................................................................................ 121 Caratteri jolly .................................................................................................................................... 122 Eliminare un criterio ......................................................................................................................... 123 Eliminare una query .......................................................................................................................... 124 LEZIONE 8 - MASCHERE ...................................................................................................127 Le maschere ...................................................................................................................................... 127 Le maschere a creazione rapida ........................................................................................................ 128 Creazione guidata Maschera ............................................................................................................. 130 Apertura di una maschera esistente ................................................................................................... 131 La visualizzazione di record in una maschera................................................................................... 132 Ordinare i dati in Visualizzazione maschera ..................................................................................... 133 Applicare un filtro ad una maschera ................................................................................................. 133 Rimuovere/Eliminare un filtro da una maschera .............................................................................. 135 Attivare/disattivare Intestazione e Piè di pagina maschera ............................................................... 136 Utilizzare l’intestazione o il piè di pagina della maschera ................................................................ 136 La creazione di una maschera basata su una query ........................................................................... 138 L'aggiunta di record mediante una maschera .................................................................................... 139 Modificare un record mediante una maschera .................................................................................. 139 Eliminare un record mediante una maschera .................................................................................... 140 Eliminare una maschera .................................................................................................................... 141 LEZIONE 9 - REPORT ........................................................................................................143 I Report ............................................................................................................................................. 143 Report a creazione rapida.................................................................................................................. 144 Migliorare il report in visualizzazione layout ................................................................................... 145 Creazione guidata Report .................................................................................................................. 148 Anteprima di stampa ......................................................................................................................... 150 Cambiare i punti d’interruzione della pagina .................................................................................... 152 Eliminare un report ........................................................................................................................... 153 LEZIONE 10 - UTILIZZO AVANZATO DI QUERY ................................................................157 Primi valori ....................................................................................................................................... 157 Campi calcolati ................................................................................................................................. 158 Funzioni & Query ............................................................................................................................. 159 Query parametriche ........................................................................................................................... 160 Concatenamento di dati..................................................................................................................... 161 Filtri nelle query................................................................................................................................ 162 Query di comando ............................................................................................................................. 163 Copyright ã 2009-2010 di Talento s.r.l. III Sommario VERSIONE PERSONALE DI STUDENTE EBOOK01 Query di creazione tabella .................................................................................................................164 Creare la copia di una tabella ............................................................................................................165 Query di aggiornamento tabella ........................................................................................................166 Query di accodamento .......................................................................................................................167 Query di eliminazione .......................................................................................................................169 LEZIONE 11 - CONTROLLI & STRUTTURA ....................................................................... 175 Struttura e layout di controllo............................................................................................................175 Controlli ............................................................................................................................................176 Controlli non adiacenti ......................................................................................................................176 Eliminare controlli.............................................................................................................................177 Dimensionare un controllo per trascinamento ...................................................................................177 Controlli adiacenti .............................................................................................................................178 Spostare controlli selezionati ............................................................................................................179 Dimensionare i controlli automaticamente ........................................................................................180 Il righello ...........................................................................................................................................180 Allineare alla griglia ..........................................................................................................................181 Elenco campi .....................................................................................................................................181 Aggiungere un campo .......................................................................................................................182 Spostare uno dei due controlli abbinati .............................................................................................183 Allineare i controlli ...........................................................................................................................184 Spaziare i controlli ............................................................................................................................184 Tipi di controlli .................................................................................................................................185 Cambiare le proprietà di un oggetto ..................................................................................................185 Immagini ...........................................................................................................................................186 Aggiungere un rettangolo o una linea ...............................................................................................187 LEZIONE 12 - STRUTTURA REPORT AVANZATO ............................................................... 191 Report in visualizzazione struttura ....................................................................................................191 Controlli calcolati ..............................................................................................................................192 Raggruppare dati in un report............................................................................................................193 Controllo Data/Ora ............................................................................................................................193 Salto pagina .......................................................................................................................................194 Creazione guidata Etichetta ...............................................................................................................195 Il report vuoto ....................................................................................................................................196 LEZIONE 13 - STAMPA ...................................................................................................... 201 L'impostazione della pagina ..............................................................................................................201 La stampa delle tabelle ......................................................................................................................202 La stampa di record selezionati .........................................................................................................203 Stampare una query ...........................................................................................................................204 La stampa di record in una maschera ................................................................................................204 La stampa delle pagine di un report ..................................................................................................204 INDICE ANALITICO ............................................................................................................ 207 IV Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 GUIDA ALL’USO Il manuale è organizzato in una serie di LEZIONI, aventi tutte la medesima struttura, descritta nel seguito. In apertura di ciascuna lezione sono elencati gli OBIETTIVI, che identificano con semplicità e chiarezza gli argomenti trattati. Per ogni argomento troviamo: · Una parte introduttiva che descrive la funzione svolta dal comando o dalla procedura trattati, spiegandone la terminologia associata e indicando in quali situazioni e con che obiettivi utilizzarli. · La sezione Procedura , introdotta dal simbolo l’operazione da svolgere. , che descrive in forma generale Il simbolo accompagna le indicazioni di Attenz io ne, necessarie per poter svolgere ogni operazione senza incorrere in spiacevoli inconvenienti o ottenere risultati inattesi. Un’Esercitazione, evidenziata dalla presenza nel titolo del simbolo , conclude la lezione. L’Esercitazione, introdotta da una descrizione delle attività da eseguire, propone una serie di passi strettamente correlati agli argomenti trattati nel corso della lezione Sebbene Access 2007 possa essere installato sia su Microsoft Windows XP SP2 o successivi sia su Windows Vista, in questo libro, si farà riferimento esplicito a Windows Vista. DESTINATARI DEL LIBRO Questo manuale è stato progettato per gli utenti che intendano affrontare l’esame ECDL Modulo 5 Uso delle basi di dati utilizzando Microsoft Office Access 2007. L’autore ha progettato questo manuale sia per utenti che si accostano a Microsoft Office Access 2007 per la prima volta, sia per utenti che già conoscono a livello di base una delle versioni precedenti del prodotto. Per questi ultimi, nel testo sono riportati riferimenti a tecniche precedenti in rapporto a quelle correnti. Le sezioni 10, 11 e 12 approfondiscono i temi trattati e vanno oltre le richieste del Syllabus5. CONVENZIONI DI TESTO USATE NEL LIBRO Convenzioni [Ctrl+V] [Alt-H-1] Opzioni di Access-Impostazioni avanzate-Modifica Copyright ã 2009-2010 di Talento s.r.l. Significato Indica una combinazione di tasti. La presenza del segno “+” indica che i tasti devono essere premuti insieme (ovvero che quando si preme il secondo il primo deve risultare già premuto) Indica una combinazione di tasti. La presenza del segno “-” indica che i tasti devono essere premuti in sequenza. La presenza del “trattino” indica il percorso gerarchico da seguire. L’esempio indica di aprire le “Opzioni di Access”, quindi selezionare le “Impostazioni avanzate” ed infine portarsi sul gruppo “Modifica”. A volte il percorso può anche essere descritto per esteso in questo caso la gerarchia è normalmente indicata dal basso. Nell’esempio si potrebbe dire: Si veda il gruppo “Modifica” presente nella sezione “Impostazioni avanzate” delle “Opzioni di Access”. V POWERED BY AULA01 Lezione 1 - Concetti di base LEZIONE 1 CONCETTI DI BASE In questa lezione imparerete a: Ø Definire il termine” database”, Distinguere tra “Sistemi informativi” e “Sistemi Informatici”, Distinguere tra “dati” e “informazioni”, Individuare l’uso dei database nel quotidiano, Citare i vari tipi di database che nel tempo si sono succeduti, Elencare le principali caratteristiche di un database relazionale, Distinguere tra DB e DBMS, Elencare i principali vantaggi d’uso di un database, Individuare ed utilizzare le fasi di progettazione di un database, Applicare le prime tre forme normali del modello relazionale, Riconoscere le figure professionali coinvolte nel mondo dei grandi database. Riferimenti al Syllabus in questa lezione: Ø 5.1.1.1 , 5.1.1.2 , 5.1.1.3 , 5.1.1.4 , 5.1.2.1 , 5.1.2.2 , 5.1.2.5 DATABASE Cercare di definire il termine database è operazione semplice e complessa allo stesso tempo. Si possono usare “paroloni” infarciti da definizioni matematiche o da terminologie da “addetti ai lavori” ma si andrebbe al di la degli scopi di questo libro. Per questa ragione l’autore ha deciso di definire il concetto di database in più modi: · Un database ( a volte chiamato base dati o banca dati) è un insieme di informazioni omogenee strutturato logicamente così da poter essere ordinato e consultato secondo criteri diversi. · Un database è un "contenitore" in grado di gestire grossi quantitativi di informazioni simili in maniera ordinata e (si spera) più semplice e veloce rispetto ai grossi libroni cartacei o documenti di tipo foglio elettronico o testo. · Un database è una collezione organizzata di informazioni utilizzate per uno specifico scopo, come, ad esempio, il tener traccia degli ordini in un'organizzazione che vende prodotti, o del flusso dei volumi in ingresso e in uscita in una libreria. L’elenco delle descrizioni potrebbe continuare ma diventerebbe ripetitivo e largamente ridondante. Ciascuna definizione riportata è di per se esatta ma non esaustiva, tuttavia pone in risalto un aspetto caratteristico dell’elemento. Ad esempio, nell’ultima definizione si pone l’accento sullo “scopo” del database. Se si raccolgono, ad esempio, dati relativi al clima nelle regioni del Sud dell'Italia e dati concernenti la raccolta di fondi di un'organizzazione finanziaria, non possiamo chiamare questo un database in quanto questi elementi non saranno mai utilizzati insieme per uno scopo specifico. Invece, se si raccolgono informazioni relative agli ordini di prodotti, ai clienti che hanno inviato tali richieste e agli impiegati che provvedono ad inviare ai clienti i prodotti desiderati, questo insieme di dati costituisce un database. I database sono al giorno d’oggi i componenti principali dei sistemi informativi aziendali. SISTEMI INFORMATIVI E SISTEMI INFORMATICI Per comprendere meglio cosa sono le basi di dati è opportuno inserirle nel contesto dei sistemi informativi. Un sistema informativo è un sistema di supporto ai processi informativi di un’organizzazione e pertanto non è legato in alcun modo all’informatica. I sistemi informativi esistono da quando l’uomo nelle pareti delle caverne disegnava dei cervi per ricordare una buona giornata di caccia. Ogni organizzazione utilizza al suo interno un sistema informativo. Quello classico si basa su Copyright ã 2009-2010 di Talento s.r.l. 1 Access 2007 VERSIONE PERSONALE DI STUDENTE EBOOK01 lettere, moduli ed altri documenti cartacei. La porzione di sistema informativo che viene gestita in modo automatico mediante tecnologie informatiche prende il nome di sistema informatico. I sistemi informatici hanno il compito di raccogliere, organizzare e conservare le informazioni. Essi garantiscono che tali informazioni vengano conservate in modo permanente su dispositivi per la loro memorizzazione, aggiornate per riflettere rapidamente le loro variazioni e rese accessibili alle richieste degli utenti. Idealmente il sistema informatico dovrebbe coincidere con quello informativo. Purtroppo però i processi informativi gestiti in modo automatico costituiscono solo una porzione di gran parte dei sistemi informativi. Nel passaggio dal sistema informativo al sistema informatico l’informazione che viene manipolata (o gestita) in modo automatico deve essere omogeneizzata e spesso subisce l’introduzione di artefatti come l’introduzione del codice fiscale per identificare le persone. Dal momento che un sistema informatico è di supporto ai processi di manipolazione automatica dell’informazione è opportuno chiedersi che cosa voglia dire "informazione" e come gestirla. DATI E INFORMAZIONI Nelle attività umane più semplici le informazioni vengono rappresentate e scambiate secondo le tecniche naturali tipiche delle attività stesse: la lingua, scritta o parlata, disegni, figure, numeri. Mano a mano che le attività si sono andate sistematizzando, sono state sviluppate opportune forme di organizzazione e codifica delle informazioni. Nei sistemi informatici, per ragioni in parte tecnologiche e in parte legate alla semplicità dei meccanismi di gestione, il concetto di rappresentazione viene portato all’estremo: le informazioni vengono rappresentate per mezzo di dati, vale a dire che un dato per diventare informazione deve essere associato a un’interpretazione. I dati da soli non hanno significato, ma, una volta interpretati e correlati opportunamente, essi forniscono informazione. Chiariamo il concetto con un esempio. Se troviamo su un post-it una scritta del tipo: dott. Carlo Bianchi 742 possiamo dire che questi sono dati perché non otteniamo da essi alcuna informazione. Il significato del numero associato al nome può essere di vario tipo ad esempio: · ora dell’appuntamento in data odierna con quella persona · ultime tre cifre del fax di quella persona · numero di parole massime a disposizione nel giornale aziendale per l’elogio della persona · ecc. Se invece sappiamo che Carlo Bianchi 742 è il risultato della richiesta dell’interno telefonico relativo al capo del personale, allora i dati diventano informazione: da quel giorno in poi, fino a che la memoria non ci tradisce, sapremo che il capo del personale è il dottor Bianchi e che il suo interno è il 742. Ritornando ai sistemi informativi, i valori memorizzati in specifici byte di un file rappresentano semplicemente dei dati. Il sistema assocerà a tali dati un contesto in modo che possano diventare informazione. Per esempio, un programma potrebbe leggere i byte e interpretarli nel seguente modo: i byte da 0 a 19 rappresentano il cognome di un impiegato, da 20 a 39 il nome, da 40 a 47 la data di nascita, e così via. Se poi i dati saranno utilizzati dal sistema assieme al contesto, allora l’utente riceverà l’informazione. A titolo di esempio supponiamo che a una richiesta dell’utente, il sistema informativo aziendale risponda visualizzando quanto segue: Impiegato Cognome: Rossi Nome: Mario Data di nascita: 12/07/1979 In questo esempio, i dati sono: “Rossi”, “Mario” e “12/07/1979”. Il contesto è rappresentato da “Impiegato”, “Cognome”, “Nome” e “Data di nascita”. Dati più contesto producono informazione. I sistemi informativi organizzano e rendono disponibili informazioni accedendo ai dati. In molte applicazioni i dati hanno caratteristiche più stabili rispetto a quelle delle procedure (manuali o automatizzate) che operano su di essi. Quando una procedura sostituisce un’altra, la nuova procedura "eredita" i dati dalla vecchia, con opportune trasformazioni, più o meno semplici. Questa caratteristica 2 Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 Lezione 1 - Concetti di base di stabilità porta ad affermare che i dati costituiscono una risorsa per l’organizzazione che li gestisce, un patrimonio significativo da sfruttare e da proteggere. I DATABASE NELLA VITA QUOTIDIANA I database hanno una importanza fondamentale nella vita di tutti i giorni; basta solo pensare ai nostri dati personali e a quante volte sono stati inseriti nei vari archivi. Siamo tutti schedati nel bene e nel male! E tutta questa schedatura ha come supporto i database. Da testimonianze storiche, e scritte cuneiformi assire su tavole di argilla, risulta che a Ninive, già allora, si praticava la schedatura dei cittadini di tutto il regno assiro, e che esisteva un enorme spazio coperto destinato alla conservazione e alla consultazione di tutte quelle tavole. L'archivio di stato assiro può essere definito come il primo "database" noto e rilevante della storia della civiltà umana. Anche il Tabularium dell'Antica Roma è da considerarsi il grande database dello Stato Romano. Si potrebbe continuare con molti altri esempi ma si rischierebbe di appesantire eccessivamente il concetto. Comunque, da sempre e ovunque, l'uomo, soprattutto di governo, ha usato e perfezionato le tecniche di archiviazione per i suoi scopi più disparati. Primo tra tutti quello di controllare le ricchezze del proprio popolo e riscuotere le imposte. Ultimamente, a causa della diffusione di Internet, il fenomeno di schedatura è diventato diffuso a livello planetario. Siamo tutti, o quasi, schedati sia dai nostri governi che dalle multinazionali e trattati come potenziali clienti; si salvano solo alcune tribù isolate, ma anche loro, sicuramente, avranno una loro schedatura locale. Come difenderci da questo globale e continuo controllo sui nostri dati ancora non lo sappiamo. Tutto il controllo avviene, in modo così sistematico, rigoroso, puntuale e sofisticato, grazie al grado di perfezionamento che hanno raggiunto oggi i database. Riescono a contenere una quantità di informazioni dettagliate di ogni genere (testi, grafica, filmati, suoni, ...), umanamente infinita. Generalmente, il maggior uso che si fa di un database è quello di richiamare alcuni dati, precedentemente archiviati, per una loro lettura, modifica o eliminazione. Usare un database solo per questi scopi è alquanto limitativo. I database, potenzialmente, possono offrirci molto di più. Partendo dai dati disponibili ed applicando opportuni modelli matematici è possibile fare ragionevoli e sufficientemente attendibili previsioni future su alcuni fenomeni, come l'andamento della borsa, le previsioni del tempo, il passaggio degli uragani, il grado di inquinamento di una città ed altri infiniti fenomeni naturali e sociali. L’uso dei database permea l’attività quotidiana. Quando attraverso Internet stiamo prenotando un biglietto aereo stiamo utilizzando inconsapevolmente un grande database. Quando accediamo al nostro conto corrente bancario o al sito della nostra carta di credito stiamo accedendo ad un altro database. L’elenco è pressoché infinito. Tutte le volte che ci rechiamo presso uno sportello pubblico è sufficiente fornire nome, cognome e data di nascita, o al più il codice fiscale, per vederci immediatamente identificati sul terminale di sportello collegato con un’applicazione di database. EVOLUZIONE DEI DATABASE Nel paragrafo precedente si è fatto cenno all’uso di arcaiche tecniche di schedatura assimilabili nel concetto e nello scopo ai moderni database. Limitandoci a questi ultimi va rilevato che i database che si usano oggi (e come impareremo a conoscere più avanti) rappresentano l’evoluzione dei modelli nati a partire dagli anni ’60. In base alla loro struttura logica si possono distinguere i seguenti tipi di database: · Il modello gerarchico è quello che ha conosciuto il maggior utilizzo fino agli anni '80. Il database è composto da un insieme di archivi. Gli archivi sono composti da record chiamati segmenti. I segmenti sono in rapporto gerarchico tra loro attraverso legami di tipo padrefiglio. La struttura ad albero che caratterizza questo modello si basa sulla possibilità di individuare un segmento principale, il padre o la radice, dal quale dipendono n segmenti figli, Copyright ã 2009-2010 di Talento s.r.l. 3 Access 2007 · · · VERSIONE PERSONALE DI STUDENTE EBOOK01 che a loro volta si trasformano in padri per altri figli e così via. A questi, in virtù della totale dipendenza dal padre, è possibile fare riferimento solo attraverso il passaggio dal nodo principale. Non è possibile dal figlio risalire al padre. Il modello reticolare deriva da quello gerarchico, rispetto al quale supera la rigidità della struttura ad albero nell'interdipendenza dei dati, ma la cui complessità ne ha impedito una larga diffusione. In una struttura gerarchica un segmento figlio può avere solo un segmento padre; non è così nel modello reticolare: ogni record può avere un numero qualsiasi di record subordinati e di record precedenti e le correlazioni vengono espresse attraverso record particolari, chiamati record di collegamento (member), che formano delle catene tra le varie parti del sistema. Le strutture utilizzate nel modello reticolare sono due, il record (si pensi ai comuni file) e il set, che permette di correlare i record, per mezzo di catene di puntatori. Dunque una base di dati reticolare è definita con riferimento ad uno schema, che contiene tipi record collegati fra loro da tipo set. Il modello relazionale; organizza i dati in tabelle, basandosi sulle relazioni fra di esse. Il modello ad oggetti; il più recente, estende i concetti del modello relazionale adattandoli alla programmazione ad oggetti. ESEMPI DEL MODELLO GERARCHICO E RETICOLARE I primi due tipi di database, quelli gerarchici e reticolari, appartengono ormai alla storia dell'informatica. La maggior parte dei database attualmente utilizzati appartiene alla categoria dei database relazionali. I motivi di questo successo (anche commerciale) vanno ricercati nella rigorosità matematica e nella potenzialità espressiva del modello su cui si basano, nella sua semplicità di utilizzo e, ultima ma non meno importante, nella disponibilità di un linguaggio di interrogazione standard. ESEMPIO DI MODELLO RELAZIONALE I database ad oggetti sono la nuova frontiera nella ricerca sui database, infatti le loro caratteristiche di estendibilità, derivanti dalla possibilità di definire nuovi tipi di dati e comportamenti, li rendono particolarmente appetibili per tutte quelle applicazioni che richiedono dati complessi, come ad esempio immagini e suoni. Purtroppo la mancanza di un modello per gli oggetti universalmente accettato e la non disponibilità di un linguaggio di interrogazione standard fanno sì che ogni produttore implementi la propria visione specifica, di solito assolutamente incompatibile con tutte le altre. Nel seguito del corso si parlerà solamente di database relazionali. 4 Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 Lezione 1 - Concetti di base DATABASE RELAZIONALI l modello relazionale è stato introdotto nel 1970 dal britannico Edgar Frank Codd col documento "A Relational Model of Data for Large Shared Data Banks" (modello di dati relazionale per grandi banche dati condivise) a completamento di un progetto di ricerca commissionato da IBM. Il documento, composto di 30 capitoli e due appendici, non è di facile lettura e utilizza una terminologia che non ha poi trovato utilizzi nella pratica comune. Nel modello relazionale la struttura principale è la “relazione”, cioè una tabella bidimensionale composta da righe e colonne. Ciascuna riga, definita “tupla”, rappresenta “un'entità” che si desidera memorizzare nel database. Le caratteristiche di ciascuna entità sono definite invece dalle colonne delle relazioni, che vengono chiamate “attributi”. Entità con caratteristiche comuni, cioè descritti dallo stesso insieme di attributi, faranno parte della stessa relazione. Nota: Nella pratica e nel contesto di questo libro non si farà riferimento alla terminologia relazionale utilizzata nel succitato documento ma quella utilizzata nel linguaggio informatico comune e comunque quella richiesta dal Syllabus. Un database relazionale è una raccolta di informazioni omogenee, memorizzate su più tabelle. Una tabella è una raccolta di dati relativi ad uno specifico argomento e organizzata in righe e colonne. In un database relazionale due o più tabelle possono essere collegate in modo da sembrare una sola tabella. In questi database non ci sono ripetizioni di dati tranne per quegli elementi con i quali sono collegate le tabelle. Una tabella è composta di campi e record. Un record è una riga in una tabella e contiene le informazioni relative ad un "elemento". Un campo è una colonna in una tabella; i campi sono categorie di informazioni, come nomi, indirizzi, città, stati e codici postali. L'insieme dei campi che contiene i dati di una singola voce è il record. Per esempio, "Carlo Rossi, via Verdi 11, 70043 Monopoli, Bari" è un record della tabella Indirizzi. Ogni campo nel record è valorizzato: "Bari" è il valore del campo Provincia nel precedente esempio. Ogni tabella deve possedere una chiave primaria, cioè un campo (o più campi) in grado di identificare in maniera univoca ciascun record della tabella. Ad esempio in una tabella Ordini il campo Codice Ordine può assolvere egregiamente questo compito. La chiave primaria è indispensabile per stabilire una valida relazione tra tabelle, cioè per collegare i dati di una tabella con un’altra. Ad esempio ponendo in relazione la tabella dei Clienti con la tabella degli Ordini sarà facile ritrovare gli ordini di ogni cliente senza creare duplicazioni nella tabella degli ordini. Alla chiave primaria viene automaticamente associato un Indice cioè un elemento esterno usato per ritrovare rapidamente un dato proprio come l’indice di un libro. DATABASE E SISTEMI PER LA LORO GESTIONE Un database (spesso abbreviato con DB) è una collezione di dati di solito condivisa tra diversi applicazioni o utenti. Un database può essere di grandi dimensioni (anche migliaia di miliardi di byte o terabyte) e comunque di dimensioni molto maggiori della memoria primaria di un computer; di conseguenza è memorizzata in memoria secondaria (detta anche memoria di massa). Ovviamente una base di dati può anche essere piccola, ma con gli stessi principi e funzionalità dei database grandi. Una base di dati è tipicamente condivisa: applicazioni e utenti diversi devono poter accedere, secondo opportune modalità, a dati comuni. In questo modo si riduce la ridondanza dei dati, poiché si evitano ripetizioni e conseguentemente si riduce la possibilità di incoerenze. Una base di dati è persistente, cioè ha un tempo di vita superiore al tempo di esecuzione delle applicazioni che la utilizzano. Un DBMS (Database Management System o sistema di gestione di basi di dati) è un sistema software in grado di gestire basi di dati che siano grandi, condivise e persistenti. Volendo ampliare il concetto si può aggiungere che la presenza di un DBMS permette di definire (specificare i tipi di dati e tutti i vincoli su di essi), costruire (immagazzinare i dati), manipolare (recuperare e/o modificare i dati) e condividere (con altri utenti e/o programmi) la base di dati. Copyright ã 2009-2010 di Talento s.r.l. 5 Access 2007 VERSIONE PERSONALE DI STUDENTE EBOOK01 I DBMS garantiscono l’affidabilità, cioè la capacità del sistema di conservare sostanzialmente intatto il contenuto della base di dati (o almeno di permetterne la ricostruzione) in caso di malfunzionamenti hardware e software. A questo scopo i DBMS forniscono specifiche funzionalità di salvataggio e ripristino (backup e recovery). I DBMS garantiscono la privatezza dei dati. Ciascun utente, riconosciuto in base ad un nome utente che è specificato all’atto di interagire con il DBMS, viene abilitato a svolgere solo determinate azioni sui dati, attraverso meccanismi di autorizzazione. I DBMS gestiscono le basi di dati in modo efficiente ed efficace. Per efficienza si intende un utilizzo delle risorse (tempo e spazio) che sia accettabile dagli utenti. Ad esempio un utente che acquisti un biglietto aereo attraverso Internet potrà accettare alcuni secondi di ritardo, ma un utente che controlla una centrale nucleare non potrà accettare così a lungo. Per efficacia si intende la capacità dei DBMS di rendere produttive le attività dei suoi utenti. L’attività di progettazione della base di dati e delle applicazioni che la utilizzano mira essenzialmente a garantire una buona efficacia complessiva del sistema. Se il DBMS utilizza il Modello Relazionale per strutturare logicamente i dati al suo interno allora si parla di RDBMS (Relational DBMS). Sul mercato esistono diversi RDBMS, spesso molto diversi tra loro, ma che condividono lo stesso linguaggio di definizione e manipolazione di basi di dati: il linguaggio SQL. Tale linguaggio è divenuto un vero e proprio standard anche se tutti gli RDBMS implementano l’SQL con molte variazioni. Esistono RDBMS per tutti i gusti, alcuni gratuiti, come MySQL o PostgreSQL, altri invece possono essere molto costosi, come il famosissimo Oracle. Anche MS Access è un RDBMS. VANTAGGI DEL DATABASE L’impiego del database comporta una serie di vantaggi rispetto alla gestione delle informazioni mediante file individuali. Tali benefici sono riconducibili al fatto che i dati sono controllati in maniera centralizzata. Tra i vantaggi possiamo quindi citare: · Eliminazione delle ridondanze: nell'ambiente "non database" ogni applicazione gestisce autonomamente un suo insieme di archivi; ciò conduce facilmente ad avere lo stesso dato ripetuto varie volte nel sistema informativo. Con l'impiego di un database la proliferazione dei dati viene evitata, sia perché esiste un disegno delle strutture dati più controllato, sia perché nuove applicazioni possono sfruttare agevolmente i dati già previsti. · Minori rischi di inconsistenza nei dati: eliminando le ridondanze e ponendo gli accessi sotto il controllo di uno specifico software, l’integrità logica dei dati risulta meglio assicurata e viene meno il rischio che, in certi momenti del lavoro, esistano copie disallineate dello stesso dato. · Protezione da accessi non autorizzati: il DBMS, avendo il controllo sia sui dati che sugli utenti del database, è in grado di evitare accessi non autorizzati, così che ciascun utente possa utilizzare i dati aziendali in maniera differenziata. · Integrità dei dati garantita: i dati gestiti sotto i1 controllo di un DBMS centralizzato possono essere meglio protetti a fronte di anomalie nel funzionamento del sistema o dei programmi, avvalendosi di meccanismi automatici di controllo degli accessi concorrenti e di ripristino dei dati modificati. PROGETTARE UN DATABASE Quando emerge la necessità di costruire un database, c'è la forte tentazione di sedersi alla propria stazione di lavoro, accendere il computer, lanciare il proprio RDBMS e cominciare a generare tabelle. Questo metodo, tranne nei casi davvero banali, porta solitamente alla generazione di tabelle molto grandi, mal progettate piene di ridondanze e dunque foriere di vari tipi di anomalie. È bene quindi non seguire questo metodo ma procedere con una fase di progettazione concettuale su carta che solo alla fine sfocerà nella creazione del database fisico. 6 Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 Lezione 1 - Concetti di base Nei grandi database, progettati dai professionisti dell’informatica, si adottano delle tecniche progettuali basate su cinque passi fondamentali: 1. Stesura di una descrizione della realtà da rappresentare (mini mondo). 2. Realizzazione del Modello Entità/Relazione1. 3. Traduzione del Modello ER nel Modello Relazionale. 4. Normalizzazione2 delle tabelle. 5. Traduzione del Modello Relazionale nel DDL3 dell’RDBMS scelto. Per gli scopi di questo libro, questo approccio sarebbe decisamente eccessivo per cui ci si limiterà a considerare “appropriata” la progettazione che soddisfa le seguenti caratteristiche: · Suddivide le informazioni in tabelle per argomento in modo da ridurre i dati ridondanti. · Individua le informazioni necessarie per unire i dati delle tabelle in base alle esigenze. · Supporta e garantisce l'accuratezza e l'integrità delle informazioni. · Soddisfa le esigenze di elaborazione dei dati e creazione di report. La macro fasi di progettazione di un database sono: 1. Identificare con precisione lo scopo. 2. Catalogare i dati esistenti e definire gli output richiesti 3. Suddividere le informazioni in tabelle assegnando ad ogni argomento principale una tabella. 4. Redigere per ogni tabella una lista preliminare dei campi. 5. Identificare la chiave primaria di ogni tabella. 6. Disegnare le relazioni fra le tabelle esaminando i dati di ognuna in rapporto alle altre. Aggiungere campi alle tabelle o creare nuove tabelle per chiarire le relazioni, in base alle esigenze. 7. Inserire dati campione per verificare se è possibile ottenere i risultati desiderati dalle tabelle. Apportare modifiche alla progettazione in base alle esigenze e normalizzare i dati. 8. Rivedere e finalizzare il progetto. FASE 1 - IDENTIFICARE LO SCOPO DEL DATABASE Questa fase può sembrare banale e, in genere, per i piccoli database può essere limitata ad una scrittura del tipo “Il database contiene l’elenco dei film posseduti e catalogati secondo i vari media e permette la gestione completa dei titoli e la generazione di report per tipo film, attore, regista o supporto”. In caso di database più complessi o utilizzati da numerosi utenti, così come in genere in un ambiente aziendale, lo scopo può essere articolato in uno o più paragrafi e dovrà includere i tempi e le modalità con cui il database verrà utilizzato da ogni utente, in modo da disporre di una dichiarazione degli obiettivi ben definita a cui fare riferimento nell'intero processo di progettazione. Una dichiarazione di questo tipo consente di concentrarsi sugli obiettivi al momento delle decisioni. FASE 2 - CATALOGARE I DATI ESISTENTI E DEFINIRE GLI OUTPUT RICHIESTI Per raggiungere gli obiettivi richiesti al database è necessario analizzare i dati di cui si dispone e verificare che questi dati siano sufficienti per generare gli output richiesti. Va anche tenuto conto della natura di questi dati. Se i dati sono di tipo cartaceo il database dovrà prevedere la fase di acquisizione e controllo degli stessi. Se invece i dati sono disponibili su archivi non strutturati, come elenchi di Excel, file di testo generati da Mainframe o altro, il database dovrà prevedere l’importazione e la ripulitura degli stessi. Ogni dato disponibile deve essere catalogato elencando il tipo di informazione e la sua provenienza. Ogni dato è potenzialmente candidato a diventare una colonna di una tabella. Considerare quindi i tipi di report richiesti. Analizzando i report che si desidera creare, è possibile identificare a ritroso gli elementi necessari nel database. 1 Modello per la rappresentazione concettuale dei dati ad un alto livello di astrazione introdotto da Peter Chen. Procedimento volto all'eliminazione della ridondanza e del rischio di inconsistenza dal database. 3 Linguaggio che permette di creare, modificare o eliminare gli oggetti in un database. 2 Copyright ã 2009-2010 di Talento s.r.l. 7 Access 2007 VERSIONE PERSONALE DI STUDENTE EBOOK01 Si supponga ad esempio di offrire ai clienti l'opportunità di acconsentire esplicitamente all'invio di brochure informative a mezzo posta elettronica (o rifiutare esplicitamente tale opportunità) e di voler generare un elenco dei clienti che hanno acconsentito. Per registrare tali informazioni, la tabella dei clienti dovrà possedere la colonna “Invio brochure” in modo da poter impostare per ogni cliente il valore su Sì o No. Inoltre, dopo aver determinato che un cliente desidera ricevere messaggi di posta elettronica, sarà necessario conoscere e registrare l'indirizzo e-mail a cui devono essere inviati. Dovrà pertanto essere registrato un indirizzo di posta elettronica per ogni cliente. Se queste informazioni non erano state inizialmente previste , aggiungere i campi all’elenco dei dati necessari. Ripetere questa operazione per qualsiasi altro report che si prevede di creare. Da ultimo, considerare le domande a cui si desidera trovare risposta mediante il database. Ad esempio, quante vendite del prodotto “x” sono state concluse nell'ultimo mese? Dove risiedono i migliori clienti? Qual è il fornitore del prodotto con il volume di vendite più elevato? Prevedendo queste domande è possibile identificare elementi aggiuntivi da registrare. FASE 3 - PROGETTARE LE TABELLE Decidere quali tabelle e campi debbano essere inclusi in un database è una delle operazioni più importanti nella progettazione di un database relazionale. Ciascuna tabella del database deve contenere informazioni di un "oggetto" unico e specifico, cioè l'insieme delle informazioni correlate con una caratteristica comune. Se non è così allora probabilmente la tabella contiene dati ridondanti e questo può essere fonte di diverse anomalie. Si osservi ad esempio la seguente porzione di tabella (sono stati riportati solo i campi necessari per rendere evidente il concetto): Prodotti e fornitori Prodotto Fornitore Indirizzo The verde Sapori d’oriente Via del fico 42 Zafferano Sapori d’oriente Via del fico 42 Panna da cucina Gusti emiliani Via Barilotti 11 In questo caso, ogni riga contiene informazioni sia sul prodotto che sul relativo fornitore. Poiché si può disporre di numerosi prodotti dello stesso fornitore, le informazioni relative al nome e all'indirizzo del fornitore devono essere ripetute molte volte. Ciò costituisce uno spreco di spazio su disco (ma questo è solo il minore dei mali). La registrazione delle informazioni relative al fornitore una sola volta in una tabella Fornitori separata e il successivo collegamento a tale tabella dalla tabella Prodotti rappresentano una soluzione notevolmente più efficiente. Un secondo problema associato a questa progettazione viene riscontrato quando si devono modificare le informazioni sul fornitore (anomalia di update). Si supponga ad esempio di dover modificare l'indirizzo di un fornitore. Poiché tale indirizzo è presente in numerose posizioni, è accidentalmente possibile modificarlo in una posizione ma omettere di modificarlo in altre. Il problema può essere risolto registrando l'indirizzo del fornitore in un'unica posizione. Quando si progetta il database, provare sempre a registrare ogni dato una sola volta. Se si rileva che le stesse informazioni devono essere ripetute in più posizioni, ad esempio l'indirizzo di un determinato fornitore, inserire tali informazioni in una tabella separata. Si supponga infine di disporre di un unico prodotto fornito da Cantina ABC e di voler eliminare il prodotto mantenendo tuttavia le informazioni relative al nome e all'indirizzo del fornitore. Non è possibile eliminare il record del prodotto senza perdere le informazioni relative al fornitore (anomalia di delete). Poiché ogni record contiene sia i dati su un prodotto che i dati su un fornitore, gli uni non possono essere eliminati senza eliminare gli altri. Per mantenere separati questi dati, è necessario dividere questa unica tabella in due: una tabella per le informazioni relative ai prodotti e un'altra tabella per le informazioni relative ai fornitori. Eliminando il record di un prodotto dovranno essere eliminati soltanto i dati sul prodotto, non i dati sul fornitore. 8 Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 Lezione 1 - Concetti di base Prodotti Prodotto PrezzoU Scorte IDFonitore The verde 1,32 2000 1 Zafferano 1,55 1500 1 Panna da cucina 0,85 800 2 Fornitori ID Nome Indirizzo 1 Sapori d’oriente Via del fico 42 2 Gusti emiliani Via Barilotti 11 3 Cantina ABC Via delle viti 33 Dopo che è stato scelto l'argomento rappresentato da una tabella, le colonne della tabella dovranno contenere soltanto dati relativi a tale argomento. Nella tabella dei prodotti, ad esempio, dovranno essere memorizzati soltanto dati sui prodotti. Poiché l'indirizzo del fornitore costituisce un dato relativo al fornitore e non un dato relativo al prodotto, tale indirizzo appartiene alla tabella dei fornitori. FASE 4 - SUDDIVIDERE I CAMPI Per determinare le colonne di una tabella, definire le informazioni di cui è necessario tenere traccia relativamente all'argomento registrato nella tabella. Dopo aver determinato l'insieme iniziale di colonne per ogni tabella, è possibile perfezionare ulteriormente le colonne. In generale è opportuno che ogni campo contenga un solo elemento del dato cioè che nessun dato sia di tipo composto. Tipicamente questo è valido per i nominativi e gli indirizzi. È ad esempio opportuno memorizzare il nominativo del cliente in due colonne separate, corrispondenti a nome di battesimo e cognome, in modo da poter eseguire l'ordinamento, la ricerca e l'indicizzazione in base a tali colonne. Analogamente, per i cinque componenti dell'indirizzo: via, città, provincia, codice postale e paese, è ugualmente opportuno memorizzarli in colonne separate. Per eseguire un'operazione di ordinamento, ricerca o filtro in base alla provincia, ad esempio, è necessario che le informazioni relative alla provincia siano memorizzate in una colonna distinta. Un altro elemento importante da prendere in considerazione e quello di non includere colonne calcolate cioè di non memorizzare risultati di calcoli nelle tabelle; nemmeno se si importano da Excel! Le tabelle non offrono capacità di calcolo, per cui se si dovesse aggiornare uno dei componenti del calcolo, il risultato non cambierebbe e si creerebbe una inconsistenza. Ad esempio, si consideri la seguente porzione di tabella. Se la quantità viene aggiornata il campo importo rimane invariato. Quantità 100 PrezzoU €1,45 Importo €145,00 Il calcolo potrà invece essere eseguito in Access quando si desidera visualizzare il risultato. Si supponga ad esempio di dover generare la fattura di una vendita. Il report fattura provvederà a fare i calcoli necessari a partire dai dati disponibili anche se i singoli importi non sono memorizzati nella tabella. FASE 5 - IDENTIFICARE LA CHIAVE PRIMARIA DI OGNI TABELLA Ogni tabella di un database relazionale deve avere un campo, o una combinazione di campi, che contiene un valore in grado di identificare in modo univoco ciascun record. Ad esempio, un campo codice cliente sarà in grado di identificare senza difficoltà di interpretazione, ciascun cliente. Questo Copyright ã 2009-2010 di Talento s.r.l. 9 Access 2007 VERSIONE PERSONALE DI STUDENTE EBOOK01 campo è chiamato chiave primaria della tabella. Il valore della chiave primaria deve essere univoco cioè non sono consentiti duplicati nei suoi valori. È sempre consigliabile scegliere una chiave primaria il cui valore non verrà modificato. In un database che utilizza più tabelle, la chiave primaria di una tabella può essere utilizzata come riferimento in altre tabelle. Se la chiave primaria viene modificata, la modifica dovrà inoltre essere applicata in ogni posizione in cui viene fatto riferimento alla chiave. L'utilizzo di una chiave primaria non soggetta a modifiche riduce la possibilità che la chiave primaria risulti non sincronizzata con le altre tabelle che vi fanno riferimento Se non esiste un singolo campo avente le caratteristiche proprie della chiave primaria, è possibile definire una chiave primaria come insieme di più campi (chiave multi-campo). In questo caso, è importante utilizzare il numero più piccolo possibile di campi per definire la chiave primaria. In subordine è possibile creare un campo che generi automaticamente una progressione numerica nel campo chiave (vedere più avanti il tipo dati “contatore”). Quest’ultimo metodo ha anche il vantaggio che il campo generato non è più modificabile ed è quindi il candidato ideale per una chiave primaria. Attenzione Per poter essere definito come chiave primaria, un campo non deve mai avere valore "nullo" (non deve cioè essere vuoto o avere un valore sconosciuto al sistema). Il valore "nullo" non coincide con "zero". In un campo numerico, "zero" è un valore corretto. FASE 6 - DISEGNARE LE RELAZIONI FRA LE TABELLE In un database relazionale, le informazioni vengono suddivise in tabelle separate per argomento. Utilizzando le relazioni tra le tabelle si possono combinare le informazioni in base alle esigenze. Con questo meccanismo si evitano le duplicazioni (ridondanze) e si prevengono gli errori di aggiornamento (anomalie di update) e di cancellazione (anomalie di delete). Le due tabelle distinte Prodotti e Fornitori viste nella “Fase 3” rappresentano ottimamente un esempio di questo concetto. Un fornitore può fornire qualsiasi numero di prodotti, quindi, per ogni fornitore della tabella Fornitori possono essere presenti numerosi prodotti nella tabella Prodotti ma per ogni prodotto esiste solo un fornitore. Tra la tabella Fornitori e la tabella Prodotti può essere pertanto stabilita una relazione uno-a-molti. Prodotti CodiceP Prodotto PrezzoU Scorte IDFonitore IT01 The verde 1,32 2000 1 IT02 Zafferano 1,55 1500 1 IT03 Panna da cucina 0,85 800 2 Tabella correlata Fornitori ID Nome Indirizzo 1 Sapori d’oriente Via del fico 42 2 Gusti emiliani Via Barilotti 11 3 Cantina ABC Via delle viti 33 Chiave esterna Tabella primaria RELAZIONE UNO A MOLTI Per rappresentare una relazione uno-a-molti nella progettazione del database, aggiungere la chiave primaria del lato "uno" della relazione come ulteriore colonna o insieme di colonne nella tabella sul lato "molti" della relazione. In questo caso, ad esempio, si aggiunge la colonna IDFornitore alla tabella Prodotti (che contiene i valore del campo ID della tabella Fornitori). L'ID del fornitore può quindi essere utilizzato da Access nella tabella Prodotti per individuare il fornitore corretto per ogni prodotto. 10 Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 Lezione 1 - Concetti di base La colonna IDFornitore della tabella Prodotti viene denominata chiave esterna. Una chiave esterna è costituita dalla chiave primaria di un'altra tabella. La colonna IDFornitore della colonna Prodotti è una chiave esterna poiché costituisce anche la chiave primaria della tabella Fornitori. Un altro tipo di relazione è rappresentato dalla relazione uno-a-uno. Una relazione uno-a-uno significa che ogni record della tabella A è correlato ad uno (e solo ad uno) della tabella B e viceversa. Quando si identifica una relazione di questo tipo, entrambe le tabelle devono condividere un campo comune (normalmente la chiave primaria). Si supponga ad esempio di dover registrare alcune informazioni supplementari sui prodotti che sono raramente necessarie o sono applicabili soltanto ad alcuni prodotti. Poiché non sono in genere necessarie e la relativa memorizzazione nella tabella Prodotti determinerebbe spazio vuoto per ogni prodotto a cui non sono applicabili, le informazioni vengono inserite in una tabella separata. Tra la tabella NoteProdotti e la tabella Prodotti esiste una relazione uno-a-uno. Per ogni record della tabella Prodotti esiste (potenzialmente) un unico record corrispondente nella tabella NoteProdotti. Prodotti CodiceP Prodotto PrezzoU Scorte IDFonitore IT01 The verde 1,32 2000 1 IT02 Zafferano 1,55 1500 1 IT03 Panna da cucina 0,85 800 2 IT04 Sciroppo dietetico 2,45 50 5 NoteProdotti CodiceP Nota IT04 Non superare le dosi giornaliere riportate in etichetta ……………… RELAZIONE UNO A UNO Quando nel database si rileva l'esigenza di una relazione uno-a-uno, considerare se le informazioni delle due tabelle possono essere unite in una tabella singola. Se non si desidera tale unione per qualsiasi motivo, ad esempio poiché ciò determinerebbe una notevole quantità di spazio vuoto, oppure perché le tabelle devono avere accessibilità diverse, allora creare la relazione. L’ultimo tipo di relazione possibile è la relazione molti-a-molti. Per esempio si consideri la relazione tra la tabella Prodotti e la tabella Ordini. Un singolo ordine può includere più prodotti, mentre un singolo prodotto può essere incluso in molti ordini. A ogni record della tabella Ordini possono pertanto corrispondere numerosi record della tabella Prodotti e a ogni record della tabella Prodotti possono corrispondere numerosi record della tabella Ordini. Prodotti Ordini Codice Prodotto PrezzoU CodOrd IDCliente DataOrdine IT01 The verde 1,32 OD01 SLRAC 10/01/2008 IT02 Zafferano 1,55 OD02 LTBNC 10/01/2008/ IT03 Panna da cucina 0,85 OD03 RAV42 11/01/2008 IT04 Sciroppo dietetico 2,45 OD04 FARMR 11/01/2008 DettagliOrdini CodiceP CodOrd Quantità IT01 OD01 10 IT04 OD01 5 RELAZIONE MOLTI A MOLTI L'esistenza di una relazione molti-a-molti tra gli argomenti delle due tabelle, Ordini e Prodotti, presenta un problema. Se si tenta di creare la relazione tra le due tabelle aggiungendo il campo CodiceP alla tabella Ordini, per includere più prodotti in un ordine è necessario disporre di più record per ordine nella tabella Ordini, ripetendo le informazioni relative all'ordine in ogni riga correlata a un singolo ordine e Copyright ã 2009-2010 di Talento s.r.l. 11 Access 2007 VERSIONE PERSONALE DI STUDENTE EBOOK01 ottenendo così una progettazione inefficiente che può determinare dati non accurati. Lo stesso problema si riscontra inserendo il campo CodOrd nella tabella Prodotti, poiché si disporrà di più record per ogni prodotto nella tabella Prodotti. Per risolvere questo problema è necessario creare una terza tabella, in genere denominata tabella di collegamento, che consente di suddividere la relazione molti-a-molti in due relazioni uno-a-molti. Nella terza tabella viene inserita la chiave primaria di ognuna delle due tabelle, registrando così ogni occorrenza o istanza della relazione. FASE 7 - NORMALIZZARE I DATI In questa fase si prova ad inserire per ogni tabella una piccola serie di dati campione e si verifica se il database risponde alle esigenze di progetto. In questo contesto potrebbe balzare agli occhi la dimenticanza o la possibile miglioria di un elemento e questo potrebbe richiedere la creazione di una nuova tabella. Effettuando una progettazione accurata, adottando i criteri sinora esposti e applicando le normali regole di buon senso (ma bisognerebbe aggiungere anche con un pizzico di esperienza), si dovrebbe arrivare a questo punto con un database correttamente strutturato. In ogni caso la teoria dei database relazionali ha previsto una serie di “controlli”, denominati regole di normalizzazione, da applicare alle tabelle per verificarne la corretta strutturazione. Il processo di applicazione delle regole alla progettazione del database viene chiamato" normalizzazione del database o semplicemente normalizzazione. La normalizzazione, maggiormente utile dopo che sono stati rappresentati tutti gli elementi di informazioni ed è stata definita una progettazione preliminare, è finalizzata a garantire che gli elementi di informazioni siano stati suddivisi nelle tabelle appropriate. La normalizzazione non può tuttavia garantire che si disponga di tutti gli elementi di dati corretti come punto di partenza. Le regole vengono applicate in successione, verificando in ogni passaggio che la struttura raggiunga la cosiddetta "forma normale". Sono in genere accettate cinque forme normali, dalla prima forma normale fino alla quinta. Ogni forma normale rappresenta un insieme sempre più stringente di regole e assume che i requisiti della forma precedente siano tutti soddisfatti. Normalizzando i dati si eliminano le informazioni ridondanti e si organizzano le tabelle per facilitare la gestione, l'aggiornamento e la manutenzione del database. Solitamente, effettuando questa operazione si suddividono grandi tabelle in altre più piccole e di più facile gestione, inserendo chiavi esterne per creare la connessione fra le varie tabelle. Una valida relazione fra le tabelle è stabilita se si raggiunge la terza forma normale. In questo testo saranno descritte, le regole delle prime tre forme normali. Per descrivere questo processo verrà utilizzato un esempio diverso dai precedenti in quanto le tabelle già analizzate non mostrano problemi di normalizzazione. Prima forma normale Una tabella è normalizzata alla prima forma normale quando presenta in ogni campo il valore significativo più piccolo e la tabella stessa non contiene ripetizione di gruppi di campi. La tabella mostrata nella figura seguente non è normalizzata. Il campo Nominativo contiene il nome e il cognome del dipendente e pertanto il valore del campo non è ridotto al valore significativo più piccolo. Per rendere la tabella in prima forma normale occorre suddividere il campo Nominativo in due campi, il primo per il nome e il secondo per il cognome. 12 Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 Lezione 1 - Concetti di base Un altro cambiamento da apportare è quello di eliminare i gruppi ripetitivi di dati. Nella tabella mostrata i campi Progetto e TempoP% sono ripetuti più volte. La ripetizione dei dati può rendere difficile oppure impossibile l'analisi degli stessi. La tabella si normalizza definendo un solo campo Progetto e un solo campo TempoProgetto%. Prestare attenzione al fatto che questo cambiamento porta a ridefinire la chiave primaria che non può più essere demandata al solo campo Cod Dip ma deve comprendere anche il campo Progetto. Seconda forma normale Vediamo ora come ridurre la tabella alla seconda forma normale. Come già detto, le forme normali sono progressive: una tabella deve aderire alla forma precedente prima di passare alla successiva. La seconda forma normale si applica alle tabelle con chiave primaria a campi multipli: ogni campo non definito come chiave deve essere funzionalmente dipendente dall'intera chiave primaria. Per ridurre una tabella alla seconda forma normale bisogna mettere in un'altra tabella tutti i campi che non sono direttamente collegati a tutti i campi della chiave primaria (CodDip + Progetto). Osserviamo alcuni campi della tabella per determinare se si riferiscono o no ad entrambi i campi della chiave primaria. Il campo TempoProgetto% si riferisce ad entrambi i campi CodDip e Progetto, Copyright ã 2009-2010 di Talento s.r.l. 13 Access 2007 VERSIONE PERSONALE DI STUDENTE EBOOK01 mentre i campi Cognome, Nome, Ufficio e Descrizione si riferiscono solo al campo CodDip: dovendo osservare le specifiche della seconda forma normale tali campi devono essere rimossi e posti in un'altra tabella. La figura seguente mostra la tabella ridotta alla seconda forma normale. Ovviamente avremo una successiva tabella che contiene i quattro campi eliminati con l'aggiunta del campo CodDip, necessario per poter recuperare i dati. Terza forma normale Affinché una tabella sia nello stato di terza forma normale è necessario che ogni campo non chiave sia direttamente correlato con il campo chiave primaria. Se un campo non è una descrizione diretta del campo chiave primaria normalmente conterrà dati ripetitivi. Nell'esempio mostrato in figura si nota questa ripetitività nei campi Ufficio e Descrizione: essi infatti non sono direttamente correlati con il campo chiave primaria CodDip. Per far sì che la tabella sia ridotta alla terza forma normale i campi Ufficio e Descrizione devono essere rimossi e posti in un'altra tabella. La tabella ridotta alla terza forma normale si presenta come in figura. 4 Cod Dip EN1-10 Cognome Pastori Nome Claudia Ufficio H1134 EN1-25 EN1-26 EN2-34 EN2-37 EN4-01 Berta Fogliani Savino Valli Musa Anna Rosa Maria Antonio Sergio Armando H1134 H1134 E0101 P2026 A1001 4 Ufficio H1134 Descrizione Prog. Hardware E0101 P2026 A1001 EDP Marketing Serv. generali - - 14 Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 Lezione 1 - Concetti di base FASE 8 - RIVEDERE E FINALIZZARE IL PROGETTO A questo punto della progettazione il database è strutturalmente pronto nella parte che riguarda i dati ma naturalmente manca ancora tutto nella progettazione dell’interfaccia utente (query, maschere e report). Per quanto attiene ai dati è importante verificare che essi siano coerenti con le aspettative. Ogni campo di tabella deve avere il suo proprio tipo di dati, ad esempio il campo PrezzoU della tabella prodotti deve poter gestire due decimali e deve essere formattato con il simbolo valutario. Allo stesso modo il campo DataOrdine deve essere di tipo Data/Ora per consentire ad esempio l’ordinamento su base temporale. In sostanza, a differenza di Excel dove non è preventivamente necessario definire la natura del dato, nei database ogni singolo campo deve essere predisposto a ricevere un particolare tipo di dato (testo, numerico, data/ora, si/no, ecc) e questo dato deve sottostare a certi requisiti chiamati proprietà (lunghezza massima del testo, tipo di numero, numero dei decimali, formattazione, valore predefinito, ecc). Maggiori dettagli sul tipo di dati e sulle loro proprietà saranno presentati nella lezione sulle tabelle. Analogamente, maggiori dettagli sulle relazioni saranno presentati nella lezione specifica. FIGURE PROFESSIONALI Tralasciando i piccoli database domestici o di piccole realtà aziendali, il mondo dei grandi database coinvolge le seguenti figure professionali: · Specialista di database o analista è la persona che utilizza tecniche di data modeling per analizzare i dati all’interno di un’area applicativa. I suoi compiti comprendono: ü Intervistare i dipendenti per valutare le esigenze organizzative di gruppo. ü A seconda delle dimensioni del progetto, aiuta i progettisti nello sviluppo di database o progetta il database. ü Risolve e ripara eventuali problemi logici. ü Individua i punti deboli dell’applicazione e aiuta a sviluppare i necessari miglioramenti. · Amministratore del database (DBA) è la persona responsabile degli aspetti ambientali di una banca di dati. In generale, questi comprendono: ü Recuperabilità - Crea le copie di backup per ripristinare il DB in caso di crash. ü Integrità - Verifica o aiuta a verificare l'integrità dei dati ü Sicurezza - Definisce e attua i controlli di accesso ai dati stabilendo quali dati ciascun utente potrà visualizzare e/o modificare. ü Disponibilità - Garantisce la massima disponibilità del sistema (uptime) ü Prestazioni - Garantisce le massime prestazioni possibili ü Supporto allo sviluppo e al test- Aiuta i programmatori e gli sviluppatori a creare una banca dati efficiente. · Sviluppatore di database ü Codifica e testa gli oggetti logici di database · Utilizzatore ü Carica i dati ü Gestisce la manutenzione dei dati ü Esegue le ricerche necessarie ü Utilizza i report Queste distinzioni possono avere numerose sfaccettature in funzione delle dimensioni del database (10 MB, 1 GB, 1 TB, ecc), delle sue caratteristiche (client server, distribuito, ecc.), del tipo di RDBMS che si deve utilizzare (SQL server, Oracle, ecc.) e della realtà aziendale in cui si configura. Inoltre, l’avvento dei RDBMS ha trasferito sul DBA alcune competenze dell’analista creando di fatto una nuova figura professionale. L’avvento dell’informatica individuale e la disponibilità di programmi come Microsoft Access ha portato sulle spalle dell’utente alcune delle competenze dei vari profili ma limitati a realtà molto Copyright ã 2009-2010 di Talento s.r.l. 15 Access 2007 VERSIONE PERSONALE DI STUDENTE EBOOK01 piccole e circoscritte. I grandi database sono e saranno sempre di competenza degli specialisti. Inoltre, in molte realtà, sebbene un utente possa sviluppare un database ad uso e consumo di una piccola realtà, di norma non gli sarà consentito di definirne le specifiche di accesso degli utenti (compito del DBA o dell’amministratore di sistema). 16 Copyright ã 2009-2010 di Talento s.r.l. POWERED BY AULA01 Lezione 1 - Concetti di base ESERCITAZIONE Consolidare le conoscenze acquisite sui concetti di base dei database relazionali e sulla loro progettazione. 1 Quale definizione, tra le seguenti, meglio si adatta al termine “database”? 2 È un qualunque insieme di informazioni salvate su disco. È una collezione organizzata di informazioni utilizzate per una pluralità di scopi. È un archivio elettronico in cui sono raccolte e organizzate delle informazioni consultabili o modificabili in base alle proprie esigenze. I termini “Dato” e “Informazione” sono sinonimi. 3 Vero Falso I database che organizzano i dati in tabelle sono detti … 4 Reticolari Relazionali Tabellari Un Campo è ... 5 una riga di una tabella. una colonna di una tabella. un valore contenuto nella tabella. Una chiave primaria serve per … 6 contare i record della tabella. identificare univocamente ciascun record della tabella. impedire la modifica del campo su cui è applicata. Un DBMS è … 7 un database relazionale. un’applicazione per la gestione della sicurezza dei dati. un software che permette agli utenti di creare e gestire una base di dati. La prima fase della progettazione di un database è: 8 Progettazione delle tabelle. Definizione dello scopo del database. Catalogare i dati esistenti. Memorizzare il risultato di un calcolo in una tabella è … 9 possibile ma sconsigliato. impossibile. Una chiave primaria non può essere composta da più campi. 10 Vero Falso Per stabilire una relazione uno-a-molti tra due tabelle è necessario che: la chiave primaria della tabella primaria sia messa in relazione con la chiave primaria della tabella correlata. la chiave primaria della tabella primaria sia messa in relazione con la chiave esterna della tabella correlata. Copyright ã 2009-2010 di Talento s.r.l. 17