Elementi di gestione di dati con MS Access Breve introduzione per il corso ECDL mod.5 1 Concetti introduttivi • Un database o base di dati e’ una collezione di informazioni che esistono per un lungo periodo di tempo, gestita da un sistema di basi di dati (DBMS – Data Base Management System) 2 Concetti introduttivi • Funzionalita’ tipiche di un DBMS: – fornire all’utente strumenti per creare basi di dati e specificare una struttura logica per i dati (schema) – date agli utenti la possibilita’ di interrogare la base di dati – permettere la memorizzazione di grandi quantita’ di dati eterogenei per un lungo periodo di tempo, garantendo accessi efficienti e preservando i dati da incidenti e usi non autorizzati – controllare gli accessi temporanei da parte di piu’ utenti 3 Concetti introduttivi • Funzionalita’ tipiche di un DBMS: – fornire all’utente strumenti per creare basi di dati e specificare una struttura logica per i dati (schema) – date agli utenti la possibilita’ di interrogare la base di dati • Noi analizzeremo alcuni aspetti dei primi due punti, nel caso di Access 2003 4 Cosa è Access • Access e’ un DBMS che permette di progettare e utilizzare DB relazionali • Un DB Access e’ basato sui concetti di tabella e relazioni tra tabelle 5 Gli oggetti di Access •Tabelle: sono strutture rettangolari fondamentali che contengono i dati sottoforma di record •Query: sono oggetti che consentono normalmente di estrarre delle informazioni dalle tabelle o da altre query rispondenti a criteri ben definiti (query di selezione). All’occorrenza possono essere usate per modificare le informazioni all’interno del database (query di comando) 6 Gli oggetti di Access •Maschere: sono interfacce grafiche che consentono all’utente di inserire e/o visualizzare in modo semplice le informazioni contenute nel DB. •Report: sono oggetti normalmente utilizzati per creare una versione stampabile delle informazioni provenienti normalmente da una query. Possono contenere dati riassuntivi ottenuti da formule matematiche. 7 Tabelle campi record Ogni riga identifica un record. I record devono essere unici all’interno della tabella 8 Tabelle:unicita’ dei record • i casi di righe identiche devono essere gestiti in qualche modo: – aggiungendo campi specifici al soggetto della tabella che rendano unico il record (e.g., codice fiscale per persone, codice ISBN per libri) – aggiungendo identificatori appositamente definiti (ID) 9 La chiave primaria • Ogni tabella deve avere una chiave primaria, ossia un attributo o un insieme di attributi che identifichino univocamente un record • Esempio: in una tabella contenente informazioni anagrafiche degli studenti di una scuola, promuovere il campo Cognome a chiave primaria non è una scelta corretta poichè è piuttosto semplice avere omonimia di cognome (due fratelli..). L’associazione di Nome e Cognome dà maggiori garanzie anche se è teoricamente possibile che si iscrivano due Mario Rossi, ad esempio. La scelta migliore è quella di promuovere a chiave primaria un campo univoco per definizione quale il codice fiscale o il numero della carta d’identità, oppure un campo appositamente inserito per questo scopo che solitamente indicheremo con ID o IDStudente (di tipo Contatore). 10 Esercizio guida • Un esercizio ci guidera’ nel corso di questa lezione: – la creazione di un database per il cinema, che raccogliera’ informazioni su film, attori, registi, etc 11 Creiamo un database Cinema: la finestra principale di ACCESS Selezionare crea un nuovo file.. 12 Creiamo una tabella Selezionare Crea una tabella in visualizzazione struttura 13 Inseriamo i campi Nella colonna Tipo dati selezionare il tipo adatto al campo • Nome completo:Testo • Data di nascita:Data/ora • Luogo di nascita:Testo • Foto:Oggetto OLE 14 Scelta chiave primaria • Promuovere il campo Nome completo a chiave primaria Selezionare uno o + campi che costituiranno la chiave primaria, quindi la chiavetta sulla barra degli strumenti. 15 Tipi di dato per gli attributi • Testo: alfanumerici max 255 caratteri • Memo: alfanumerici senza limite di lunghezza • Numerico: utile se si vogliono fare conti su quel campo, altrimenti e’ meglio testo (e.g., per i numeri di telefono e’ meglio testo) • Data/ora • Valuta • Contatore: assegna automaticamente, in modo sequenziale, un numero intero diverso a ciascun record (utile per le chiavi) • Si/No: valori booleani(cioè del tipo VERO o FALSO) • Oggetto OLE: immagini, video, audio • Collegamento ipertestuale: URL o e-mail.. • Ricerca guidata: per selezionare il tipo di attributi di altre tabelle o query 16 Proprieta’ degli attributi • Variano al variare del tipo di dato • Ad esempio, nel caso di un campo Testo abbiamo gli attributi: dimensione campo, Formato,… • Posizionandosi sul singolo attributo abbiamo nel riquadro di destra una descrizione sintetica. 17 Inserire dati in una tabella • quando abbiamo finito di definire la tabella passiamo in visualizzazione Foglio dati (occorre salvare) • L’inserimento avviene in modo naturale spostandosi da un campo all’altro. Il record è automaticamente salvato quando ci si sposta nella riga successiva. 18 Esercizio • creiamo una tabella FILM con i seguenti attributi: – IDFilm, Titolo, Anno, nazione, Lunghezza, Nazione, Regista, Incasso Italia, Recensione, Locandina, Critica – La chiave primaria? 19 Esercizio • creiamo una tabella REGISTI con i seguenti attributi: – Nome, Data di nascita, Luogo di nascita, Foto – La chiave primaria? 20 Esercizio • creiamo una tabella DETTAGLI ATTORI con i seguenti attributi: – Nome completo, Biografia, Sito personale – La chiave primaria? 21 Arricchire il DB • per ora le tabelle che abbiamo creato sono scollegate e mancano di tante informazioni utili 22 Lista dei desideri 1. aggiungere a FILM un campo GENERE che possa assumere i seguenti valori AZIONE,AVVENTURA,ROMANTICO,ORRORE, SPLATTER,STORICO,FANTASCIENZA. 2. Mettere in relazione i film con i registi. 3. Mettere in relazione gli attori con i dettagli attori. 23 Le relazioni Le relazioni tra tabelle sono uno degli aspetti più iportanti nella progettazione di un database. Esse permettono di suddividere i dati su più tabelle, mantenendo comunque l’unità logica del DB. Esistono 3 tipi di relazioni, ma solo i primi due sono realizzabili con operazioni dirette di access 24 Le relazioni • • • 1 a 1 (uno a uno): si ottiene collegando la chiave primaria di una tabella con la chiave primaria dell’altra. Si ha questo tipo di relazione quando un record di una tabella è in relazione con al più un record dell’altra. 1 a N (uno a molti): si ottiene collegando la chiave primaria di una tabella (lato 1) con un campo dello stesso tipo dell’altra (lato molti), detto chiave esterna.Si ha questo tipo di relazione quando ad ogni record di una tabella corrispondono più record dell’altra, ma per ogni record di quest’ultima corrisponde al + un record della prima. N a N (molti a molti): si ottiene costruendo una apposita tabella di collegamento che deve necessariamente contenere dei campi che consentono la connessione con i campi chiave primaria delle due tabelle in relazione 25 Aggiungere attributi? • Non possiamo fare la stessa cosa con gli attori, perche’ potrebbero essere piu’ d’uno • Allo stesso modo non possiamo aggiungere un campo generi perche’ potrebbero essere piu’ d’uno • Inoltre non e’ una buona idea costruire tabelle con molti campi che potrebbero diventare ridondanti 26 Anomalie • I problemi di ridondanza che si verificano quando si cerca di raggruppare troppe informazioni in una singola tabella sono detti anomalie: 1. ridondanza:informazioni ripetute in modo non necessario 2. anomalie di aggiornamento 3. anomalie di cancellazione 27 Esempio di ridondanza • esistono metodi formali per scomporre le tabelle in modo da ottenere DB corretti... noi non le vedremo • regola di buon senso: cercare di mantenere tabelle piccole. 28 Esempio di ridondanza • un’alternativa consiste nel dividere le informazioni in tabelle diverse e poi legare le tabelle tramite relazioni 29 Relazioni tra tabelle • Access fornisce la posssibilita’ di creare relazioni tra tabelle in modo da collegare i dati provenienti da diverse tabelle. • Due tipi di relazione che si possono creare direttamente in Access: – 1a1 – 1 a molti 30 Relazione 1 a 1 • a ogni record di una tabella corrisponde un solo record dell’altra • Esempio: voglio aggiungere in una tabella a parte eventuali dettagli personali sugli attori e creo una tabella DETTAGLI ATTORI 31 Integrita’ referenziale • assicura che le relazioni fra i record di tabelle collegate siano valide e che non si verifichino accidentali variazioni o cancellazioni di informazioni 32 Relazione 1 a 1 • a ogni record di una tabella corrisponde un solo record dell’altra • Esempio: voglio aggiungere in una tabella a parte eventuali dettagli personali sugli attori e creo una tabella DETTAGLI ATTORI 33 Relazione 1 a molti • a un record della tabella (tabella primaria) possono corrispondere piu’ record dell’altra. • sono le relazioni piu’ comuni • nel nostro esempio se voglio mettere in relazione FILM a REGISTI (lo stesso regista puo’ avere piu’ film) 34 Relazione 1 a molti • nel nostro esempio se voglio mettere in relazione FILM a REGISTI (lo stesso regista puo’ avere piu’ film) 35 Relazione molti a molti • esempio: vogliamo modellare le relazioni tra FILM e ATTORI – ogni film ha piu’ attori e ogni attore recita in piu’ film • in Access la modelliamo come una concatenazione tra due relazioni 1 a molti e l’aggiunta di una tabella di giunzione • Nel nostro caso possiamo pensare alla tabella RECITA_IN che mette in relazione un attore e un film • La chiave primaria della tabella di giunzione e’ l’unione delle chiavi primarie delle tabelle che mette in relazione 36 Tabella di giunzione RECITA_IN 37 Relazione molti a molti 38 Le query: creazione guidata • strumento utile per accedere alle informazioni contenute nel database in modo efficace • Le istruzioni che compongono la query sono scritte in una variante del linguaggio SQL (Structured Query Language) • Access fornisce 3 modi per creare query: 1. creazione guidata (wizard) che permette di selezionare attributi da una tabella 2. creazione tramite visualizzazione della struttura 3. creazione diretta con comandi SQL (non la vedremo) 39 Il Wizard delle query creiamo una query che estragga i titoli dei film e i relativi registi 40 Esercizio! • ordiniamo in modo crescente rispetto al nome dei registi e poi al titolo del film • creiamo una query che selezioni tutte le coppie attori e registi che hanno lavorato insieme 41 I criteri nelle query • lista degli attori che recitano in pulp fiction in ordine crescente rispetto alla data di nascita 42 Esercizi • lista degli attori che recitano nei film di Tarantino dopo il 2000 (visualizzando anche il titolo del film) 43 Le maschere • Le maschere (o form) sono uno strumento utile come interfaccia al database • possono servire come comodo ausilio all’inserimento dati o per la consultazione dei risultati ottenuti da query • analizzeremo solo la modalita’ di design automatica (tramite Wizard) 44 Le maschere: esempio semplice selezioniamo i campi che vogliamo inserire, stando attenti a mettere tutti quelli obbligatori 45 Le maschere: esempio semplice scegliamo l’aspetto della form e il nome... 46 Le maschere: esempio semplice per inserire un nuovo record... 47 Maschere con sottomaschere • per inserire automaticamente dati relativi a due tabelle collegate • esempio: creiamo una maschera per l’inserimento di un nuovo film e di tutti gli attori che vi recitano 48 Maschere con sottomaschere • apriamo il Wizard delle form: – inseriamo tutti i campi relativi alla tabella FILM – inseriamo tutti i campi relativi alla tabella RECITA_IN scorro gli attori di un film scorro i record dei film 49