MICROSOFT ACCESS DEFINIZIONE Prima di parlare di cosa sia un database è bene spiegare un concetto fondamentale per capire cosa sia, appunto, un database: l’archivio. Per “archivio” si intende un contenitore di informazioni raggruppate secondo un criterio specifico, come ad esempio l’ordine alfabetico, che ne permetta il recupero, l’aggiornamento, l’inserimento e l’eliminazione nel modo più efficiente possibile. Un esempio di archivio semplice sono le biblioteche, nelle quali, fino a non molto tempo fa, per cercare un certo libro si utilizzava lo schedario; nello schedario erano presenti diversi fogli che potevano contenere diverse informazioni (il nome dell’autore, il titolo del libro, data pubblicazione, edizione, ecc.) e si poteva usufruire delle schede che suddividevano i nomi degli autori in ordine alfabetico. Una volta trovato il libro bastava appuntare su un foglio il codice della collocazione. La stessa cosa valeva per l’argomento: se si volevano trovare testi che parlassero ad esempio di informatica, si cercava la parola “informatica” o “computer” nell’apposito schedario. I problemi arrivavano quando non si aveva un’idea precisa del tema del libro o si ricordava solo una parte del nome dell’autore: cercare un determinato volume non era proprio agevole. Oggi è tutto molto più semplice; grazie al computer si eseguono tutte le ricerche possibili in modo facile e veloce anche se non si ricordano del tutto titolo o l’autore dell’opera cercata. Un DATABASE, in italiano, base di dati o banca dati, abbreviato con la sigla DB, indica un insieme organizzato di dati. Una serie di informazioni strutturate e collegate tra loro secondo un particolare modello logico scelto dal progettista del database, ad es. relazionale, che poi è il modello che seguiremo in queste lezioni, a cui gli utenti accedono attraverso l’invio di richieste in Query Language (QL - linguaggio di interrogazione) ed i progettisti attraverso software dedicati chiamati DBMS (Data Base Management System). In pratica, per database si intende l'archiviazione a livello fisico di dati (spazio su memoria fisica) tramite supporti di memorizzazione (hard disk) e il processore per l'elaborazione di questi (database server). Fig.1 – Modello di Database Server 1 DALLA REALTA’ AL MODELLO FISICO IL MODELLO LOGICO (STRUTTURA DI UN DATABASE) Le basi di dati possono avere varie strutture, di solito: 1. 2. 3. 4. 5. gerarchica; reticolare; relazionale (attualmente il più diffuso); ad oggetti (“Object Oriented”, tipico della programmazione a oggetti); semantica. Un requisito importante di una buona base dati consiste nel non duplicare inutilmente le informazioni in essa contenute: questo è reso possibile dai gestori di database relazionali (teorizzati da Edgar F. Codd), che consentono di salvare i dati in tabelle che possono essere collegate. La funzionalità di un database dipende in modo essenziale dalla sua progettazione: la corretta individuazione degli scopi del database e quindi delle tabelle, da definire attraverso i loro campi e le relazioni che le legano, permette poi una estrazione dei dati più veloce e, in generale, una gestione più efficiente. IL DATABASE SERVER Un Server di database è la parte del DBMS che si occupa di fornire i servizi di utilizzo del database ad altri programmi e ad altri computer secondo la modalità client/server. Il server memorizza i dati, riceve le richieste dei client ed elabora le risposte appropriate. I database server sono complessi sistemi software concepiti per fornire un accesso rapido ed efficace a una pluralità di utenti contemporaneamente e garantire protezione sia dai guasti che dagli accessi indebiti (sicurezza o protezione del database). Tra i più diffusi DBMS open source troviamo: 2 MySQL Firebird SQL PostgreSQL I più diffusi sistemi commerciali sono: Oracle Microsoft SQL Server Microsoft Access ESEMPIO PRATICO DI DATABASE: LA RUBRICA TELEFONICA Ogni colonna corrisponde ad un attributo dell’entità, (detto anche campo) e ogni riga della tabella (detta anche record) rappresenta un’istanza dell’entità (un caso particolare) Volendo rappresentare ad esempio l’entità persona, possiamo impostare una tabella che abbia come colonne gli attributi di una persona (nome, cognome, data di nascita, indirizzo). Ogni riga (o record) corrisponde ad una persona particolare. Gli attributi (o campi) rappresentano tipi diversi di informazione, ad esempio possiamo avere campi numerici o campi di testo, oppure campi per le date. In gergo informatico questa natura diversa dell’informazione si indica con la parola “tipo”. Anche Access lavora con i tipi: il nome dell’autore è di tipo testo (o stringa: sequenza di caratteri alfanumerici), la data è di tipo “data”, l’anno di pubblicazione può essere un tipo “numerico intero” e così via. È importante che i dati siano coerenti con i tipi corrispondenti, ad esempio, se nel campo data di nascita dell’autore inseriamo un numero come 01121980, commettiamo un errore di coerenza. Lo schema della figura è quello che visualizziamo quando chiediamo di visualizzare la struttura della tabella. Nella visualizzazione della struttura possiamo impostare, visualizzare e modificare il tipo degli attributi; ad esempio nel campo nome inseriremo solamente delle stringhe di caratteri pertanto il tipo idoneo è il tipo testo; all’attributo data abbiamo assegnato il tipo data. Approfondiremo i tipi più avanti nella guida Per iniziare la nostra esperienza con le basi dati utilizzeremo, forse, il più banale degli esempi di archivio dati: la rubrica telefonica. Chiunque di noi possiede una rubrica telefonica; una volta era presente in forma cartacea (uno schedario cartaceo dove vengono memorizzati informazioni è un database) nelle agendine tascabili, oggi, con tanti modelli di archiviazione elettronica a nostra disposizione, abbiamo diverse possibilità di memorizzazione dei nostri contatti, e tutti sono fatti tramite database. Un database in formato elettronico lo puoi creare anche con un foglio elettronico Excel o Calc. Per il nostro esempio utilizzeremo, come detto, Access. Dalla schermata iniziale di MS Access 2007 selezioniamo la sezione Nuovo database vuoto, rinominiamo il nostro database come rubrica_telefonica (l’estensione .accdb verrà inserita automaticamente), scegliamo il percorso dove salvare l’archivio che stiamo creando, nel nostro caso sul Desktop, quindi premiamo il tasto Crea, come da figura sotto: 3 Fig.2 Schermata iniziale di Access 2007 Dalla schermata successiva, cominciamo a costruire la nostra rubrica telefonica: Clicchiamo sul pulsante Nuovo campo, in alto sulla sinistra. Apparirà, a destra, una schermata con la tipologia dei campi disponibili per costruire la nostra base di dati. Basterà semplicemente fare doppio clic 4 sui campi visualizzati, in ordine o meno di come li vorremmo disporre (tanto si possono spostare semplicemente “trascinandoli” col mouse), per comporre la nostra tabella: Una volta sistemati i campi noterete che il primo campo, ID, è inserito automaticamente dal software. Si tratta del campo Chiave Primaria, un campo che consente di individuare univocamente ogni record che inseriremo nella nostra tabella. E’ un campo auto incrementale (numeri progressivi inseriti in automatico). Per vedere tutte le proprietà dei campi, ed effettuare eventuali modifiche, cliccate sulla freccia del tasto Visualizza, in alto a sinistra, e selezionare Visualizzazione Struttura: 5 Torniamo alla nostra Visualizzazione Foglio dati e inseriamo il primo record e clicchiamo sul pulsante Salva, nella Barra del Titolo, come da figura in basso: Così abbiamo creato la nostra prima tabella (entità) all’interno del nostro primo database. Adesso inseriamo altri record all’interno della nostra tabella così da creare una più completa rubrica telefonica: Terminata la nostra tabella, torniamo un attimo alla teoria per soffermarci sull’opzione Indicizzato delle proprietà dei campi. Se cerchiamo il numero di telefono di una persona sull’elenco telefonico e il cognome 6 inizia con la lettera “p”, non iniziamo la ricerca dalla prima pagina ma cerchiamo direttamente nella seconda metà della lista. L’ordine alfabetico facilita e velocizza la ricerca. In modo analogo, quando rendiamo un campo indicizzato (nel nostro caso abbiamo scelto coerentemente il campo Cognome, in quanto il più utilizzato nelle ricerche di questo tipo), Access costruisce un indice interno basato su quel campo garantendo maggiore velocità per ogni operazione che lo riguarda. Si sceglie il Sì con duplicati ammessi per l’intuibile ragione che è fortemente probabile la presenza di due o più cognomi uguali in una rubrica telefonica. Ricordiamo, però, che gli indici occupano spazio e aumentano la complessità del file quindi è meglio non abusarne. Bastano semplicemente uno o due campi, oltre la nostra Chiave Primaria, già indicizzata di default, per ottenere ottimi risultati in termini di ricerca nella nostra tabella. Una volta ultimata la nostra tabella possiamo iniziare le operazioni per lavorare con i nostri dati. Cominciamo con una semplice maschera di visualizzazione dei dati, in modo da vedere i contatti tramite una Maschera invece che tramite la modalità Foglio Dati di Access che abbiamo avuto a disposizione finora. Dal menu Crea, nella sezione Maschere, clicchiamo su Altre maschere e selezioniamo Creazione guidata Maschera: Si aprirà una finestra con due moduli in cui, a sinistra, sono elencati tutti i campi creati con la tabella Utenti ed a destra, inizialmente vuota, c’è il modulo dei campi selezionati. 7 A questo punto trasferite tutti i campi simultaneamente, tramite il tasto ‘>>’, e poi cliccate su Avanti: Continuate a selezionare Avanti, se volete lasciare la struttura standard della Maschera, fino all’inserimento del nome: qui dovete inserire un nome significativo della maschera creata. Dato che parliamo di visualizzazione di contatti, l’ho chiamata visualizza_utenti. Quindi cliccate su Fine. La schermata successiva visualizzerà i nostri contatti inseriti come da figura sotto: 8 Tramite le freccette poste in basso alla finestra possiamo scorrere i nominativi finora inseriti. Analogamente, se vogliamo creare un Report (rapporto) con i soli campi che ci interessa esportare per le nostre varie esigenze, sempre dal menu Crea, nella sezione Report scegliamo Creazione guidata Report e dalla finestra successiva, identica a quella delle Maschere, selezioniamo i campi (ma con il tasto ‘>’ per la selezione dei singoli campi) che ci interessano nel modulo destro: Nel nostro caso stiamo creando un Report con i soli campi Nome, Cognome, Città, Telefono e Cellulare. 9 Il passo successivo ci chiederà la priorità di alcuni campi. Clicchiamo su Avanti. Nella schermata seguente invece ci chiede di ordinare il report, fino ad un massimo di 4 campi. Selezioniamo il Cognome in ordine Crescente, in quanto, come detto, campo significativo della nostra rubrica telefonica: Successivamente potrete scegliere tipo di ordinamento e Stile in base ai vostri gusti, come già provato per la Maschera, ma anche in questo caso è importante il nome. Lo chiameremo report_utenti. 10 Una volta cliccato su Fine, come da immagine sopra, ci ritroveremo il nostro Report come da immagine sotto, modificabile dalla sezione Layout di Pagina, pronto per i nostri utilizzi (esportazione nei formati elencati nella sezione Dati, oppure pronto per la stampa su carta): Se chiudiamo l’Anteprima di Stampa, il Report verrà visualizzato in modalità Struttura, pronto per eventuali modifiche del foglio finale. Proviamo a fare qualche modifica e vedere qualche altra proprietà del Report: Innanzitutto, nella Barra del Titolo, si è attivato il menu dedicato al Report grazie al quale possiamo vedere e modificare diverse proprietà del nostro Report. Cominciamo con l’aggiungere un campo della nostra tabella, quello della mail, nel nostro report, come indicato nella figura sopra, cancelliamo l’etichetta Indirizzo posta elettronica (quella scritta in azzurrino) e lasciamo il riquadro dati Indirizzo posta elettronica 11 allineandolo agli altri dati. Duplichiamo copiandolo una delle etichette nella sezione Intestazione report e cambiamone il nome tramite doppio clic (rinominiamolo E-mail), allineiamo anch’esso al resto delle etichette. Possiamo modificare la grandezza dei campi da modificare cliccando sull’etichetta in Intestazione pagina e allargarli o restringerli a piacimento. Infine cancelliamo l’istruzione ‘=Now()’, che inserisce la data corrente nel piè di pagina a sinistra, semplicemente selezionandolo e premendo il tasto Canc. Il risultato è quello della figura sotto: Infine salviamo il tutto. Selezionando Visualizza Report, in alto a sinistra, il nostro nuovo Report sarà il seguente: Per completare questa prima lezione, creiamo anche la nostra prima ‘interrogazione’ al nostro database chiedendo di visualizzare sotto forma di nuova tabella i campi richiesti. Dal menu Crea, nella sezione Altro, clicchiamo su Creazione guidata Query e scegliamo quella semplice: 12 Dalla schermata successiva scegliamo quali campi vogliamo richiedere di visualizzare. Scegliamo i campi che di solito ci interessano maggiormente e cioè Nome, Cognome, Cellulare e E-mail: Il passo successivo chiede il nome da dare alla query. Scrivete utenti_Query e cliccate su Fine. La tabella che otterremo sarà la seguente: 13