BASI DI DATI Docente: Mario Di Ture Centro di Ateneo per i Servizi Informatici Università degli Studi di Cassino CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 1 Cos’è un database Un database è un insieme di informazioni correlate a un oggetto o a uno scopo particolare, ad esempio la carriera accademica di uno studente universitario In un database i dati sono memorizzati in tabelle, costituite da righe e colonne Microsoft Access è un RDBMS (Relational DataBase Management System) che gestisce tutte le informazioni in un singolo file di database, all'interno del quale sono disponibili diversi oggetti utili a tale scopo: tabelle, query, maschere, report, pagine, macro e moduli CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 2 Il modello relazionale - 1 E’ il modello organizzativo dei database più diffuso. In base a tale modello: Un database è un insieme di relazioni (tabelle) Ciascuna tabella è un insieme di tuple (righe) Ciascuna tupla (riga) è una sequenza di attributi (colonne) L’attributo (colonna) è l’unità elementare di informazione, contraddistinto dal dominio, cioè dall’insieme predefinito di valori che può assumere CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 3 Il modello relazionale - 2 Esemplificando, vediamo le caratteristiche definite nella diapositiva precedente in riferimento alla relazione (tabella) ‘esami’ superati da studenti universitari: ESAMI matricola insegnamento data voto 0000011 Statistica 1 11/11/2002 27 0000012 Diritto Commerciale 14/12/2001 30 lode SI Tupla (riga) Attributo (colonna) Il Dominio è costituito dai valori che ‘voto’ può assumere, cioè 18, 19 … 29, 30. CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 4 Tabella Excel e tabella Access Una tabella è costituita da righe e colonne, come in un foglio elettronico. Molte volte le righe vengono chiamate ‘record’, le colonne ‘campi’. In questo foglio, abbiamo una riga per ogni studente ed una colonna per gli ‘attributi’ associati. CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 5 Progettazione di un database 1 – Definiamo lo scopo e le modalità di utilizzo del database tramite: La valutazione delle esigenze degli utenti La raccolta della modulistica in uso 2 – Ogni tabella contiene informazioni relative ad uno stesso argomento. Procediamo, quindi, alla definizione delle tabelle necessarie e alle colonne da cui sono formate 3 – Individuiamo, tra le colonne di ogni tabella, quale contiene un dato univoco per ogni riga, ad es. la Matricola in una tabella ‘anagrafiche’ di studenti, questa viene detta ‘chiave primaria’ 4 – Impostiamo le relazioni tra le varie tabelle, basandoci sulla chiave primaria come sopra definita CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 6 Il linguaggio SQL Il linguaggio SQL (Structured Query Language) viene usato per definire le tabelle, per vederne e manipolarne i dati contenuti. Le istruzioni SQL possono essere costruite manualmente o col supporto degli strumenti visuali di Access. CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 7 Un semplice database per registrare gli esami sostenuti dagli studenti di una Università Per costruire il database abbiamo bisogno di almeno tre tabelle: - Studenti - Insegnamenti - Esami La tabella ‘insegnamenti’ potrebbe sembrare superflua ma, a seguito di un processo detto di ‘normalizzazione’, questa viene derivata come segue: ESAMI (dopo la normalizzazione) matricola ESAMI (originaria) matricola cod_i. Nome ins. data voto 0000011 234 Statistica 1 11/11/2002 27 0000012 235 Diritto Com. 14/12/2001 30 lode cod_inse gnamento data vot o 0000011 234 11/11/2002 27 0000012 235 14/12/2001 30 lode SI INSEGNAMENTI SI cod_insegnamento CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 descr 234 Statistica 1 235 Diritto Commerciale 8 Perché normalizzare ? I motivi sono diversi, quelli principali sono: Ripetizione di dati Non normalizzando, devo inserire la completa descrizione dell’insegnamento per ogni esame superato (con la possibilità di commettere errori di digitazione), al posto di inserire il solo codice; non aumenterei la quantità di dati significativi e, in conclusione, occuperei anche più memoria. Anomalie di aggiornamento Se cambia la descrizione dell’insegnamento, posso cambiarla su una sola riga nella tabella ‘insegnamenti’, anziché su tutte le righe della tabella ‘esami’ (se non la normalizzo) dove l’esame compare. CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 9 Creazione di un database Access Apriamo Access e, nel riquadro ‘Attività’, facciamo click su ‘Database vuoto’ Diamo un nome al database e premiamo ‘Invio’; da questo momento possiamo inserire i nostri oggetti CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 10 La schermata iniziale di un database Access vuoto La finestra a lato è quella mostrata da Access quando creiamo un nuovo database I principali elementi sono: - Elenco dei tipi di oggetti che possiamo creare (tabelle, query, maschere …), incolonnati sulla sinistra - Opzioni di creazione e oggetti creati, nella parte centrale della finestra CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 11 Creazione di una tabella Per creare la tabella ‘insegnamenti’ con gli strumenti visuali di Access: • • • clicchiamo, nella colonna degli oggetti, su ‘Tabelle’; facciamo doppio click su ‘Crea una tabella in visualizzazione struttura’, verrà mostrata una finestra per la definizione delle colonne della tabella; inseriamo i dati relativi alle due colonne (campi). Il simbolo della chiave indica che il campo è una chiave primaria Definizione di un indice univoco. Un indice velocizza le operazioni di ricerca sulla tabella e, in questo caso, garantisce altresì che non ci siano descrizioni duplicate CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 12 Tipi di dati - 1 Testo Combinazioni di testo e numeri. Memorizza fino a 255 caratteri. La proprietà Dimensione campo definisce il numero massimo di caratteri che possono essere digitati. Memo Utilizzare per testo lungo e numeri. Memorizza fino a 65.536 caratteri. Numerico Utilizzare per i dati numerici da inserire in calcoli matematici, ad eccezione dei calcoli con valuta. In tal caso, utilizzare il tipo di dati Valuta. Memorizza 1, 2, 4 o 8 byte e 16 byte solo per l'ID replica (GUID, Globally Unique Identifier). La proprietà Dimensione campo definisce il tipo numerico specifico. Data/Ora Utilizzare per la data e l'ora. Memorizza 8 byte. Valuta Utilizzare per i valori di valuta e per evitare gli arrotondamenti per difetto nei calcoli. Memorizza 8 byte. Contatore Utilizzare per i numeri univoci sequenziali (con incremento di una unità alla volta) o per i numeri assegnati in modo casuale inseriti automaticamente quando si aggiunge un record. Memorizza 4 byte e 16 byte solo per l'ID replica (GUID). Sì/No Utilizzare per i dati ai quali può essere assegnato solo uno di due valori, ad esempio Sì/No, Vero/Falso, On/Off. I valori Null non sono consentiti. Memorizza 1 bit. Oggetto OLE Utilizzare per gli oggetti OLE, ad esempio documenti Word, Excel, immagini, suoni ecc. creati in altri programmi tramite il protocollo OLE. Memorizza fino a 1 GB. CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 13 Tipi di dati - 2 Collegamento Utilizzare per i collegamenti ipertestuale ipertestuali. Un collegamento ipertestuale può essere un percorso UNC o un URL. Memorizza fino a 64.000 caratteri. Ricerca guidata Utilizzare per creare un campo che consente di scegliere un valore da un'altra tabella o da un altro elenco di valori tramite una casella combinata. Se si sceglie questa opzione nell'elenco dei tipi di dati, verrà avviata una procedura guidata. Selezione del tipo di dato. Nelle schede sottostanti, è possibile definire ulteriori proprietà del campo CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 14 Definire una chiave primaria La chiave primaria è un campo, o una combinazione di campi, che identifica in modo univoco ciascun record in una tabella. La presenza di una chiave primaria è consigliata (ma non obbligata) poiché, oltre a garantire l’integrità dei dati (almeno in parte), consente di stabilire relazioni predefinite con altre tabelle. Il piccolo rettangolo a sinistra del nome del campo è detto ‘selettore di riga’. Selezioniamo il campo che farà da chiave primaria e poi clicchiamo sul simbolo della chiave sulla barra degli strumenti CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 Il pulsante col simbolo della chiave col quale è possibile definire una chiave primaria 15 Relazioni fra tabelle Le relazioni impongono delle regole di integrità referenziale tra le tabelle. Ad esempio, definendo una relazione tra la tabella ‘esami’ e quella degli ‘insegnamenti’ basata sulla colonna ‘cod_insegnamento’, se inseriamo una riga nella tabella ‘esami’, siamo certi che il codice insegnamento sia un codice esistente, in quanto la relazione impostata obbliga Access a fare questa verifica. Inoltre, se impostiamo le relazioni, saremo agevolati nella creazione di query, report e maschere. La relazione tra due tabelle A e B, a seconda del modo in cui le righe vengono coinvolte, può essere: - Uno a uno (un record della tabella A corrisponde ad un unico record nella tabella B e viceversa) - Uno a molti (un record della tabella A corrisponde a più record nella tabella B, è il caso di cui sopra: un insegnamento ha molte ricorrenze in esami) - Molti a molti (un record della tabella A corrisponde a più record nella tabella B e viceversa, per definirla è necessario creare una terza tabella) CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 16 Tabella studenti e tabella esami Per impostare una relazione tra studenti ed esami sostenuti dobbiamo creare altre due tabelle, ‘studenti’ ed ‘esami’, e definire la relativa struttura: CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 17 Impostazione di una Relazione Impostiamo la relazione vista con gli strumenti visuali di Access. • nel menu ‘Strumenti’ scegliamo ‘Relazioni’; • clicchiamo sul pulsante ‘aggiungi tabella’; • selezioniamo le tabelle interessate; • trasciniamo la colonna ‘cod_insegnamento’ della tabella ‘esami’ sulla stessa colonna della tabella ‘insegnamenti’; • verrà aperta una finestra per definire i dettagli della relazione; • attiviamo la check box ‘Applica integrità referenziale’; • a seconda del tipo di relazione, possiamo anche attivare l’aggiornamento e l’eliminazione a catena delle righe; • ripetiamo il procedimento per la relazione tra ‘esami’ e ‘studenti’ (basata sulla colonna ‘matricola’). CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 Pulsante ‘aggiungi tabella’ 18 Esercitazione N. 1 Creiamo le tabelle elencate, dimensionando i campi in modo opportuno: … e impostiamo le relazioni: studenti <-> citta studenti <-> esami studenti <-> diplomi insegnamenti <-> esami corsi_facolta <-> corsi corsi_facolta <-> facolta NOTA: per impostare le relazioni, i campi coinvolti devono essere dello stesso tipo SEGUE >> CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 19 Ulteriori tabelle e relazioni … e impostiamo le relazioni: studenti <-> prenotazioni studenti <-> iscrizioni appelli <-> insegnamenti appelli <-> docenti appelli <-> prenotazioni studenti <-> corsi_facolta (su due campi) CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 20 Popoliamo le tabelle CITTA DIPLOMI CORSI FACOLTA DOCENTI INSEGNAMENTI CORSI_FACOLTA STUDENTI ESAMI ISCRIZIONI APPELLI PRENOTAZIONI CORSI DI INFORMATIZZAZIONE - Basi di Dati: MS Access - Parte 1 - Maggio 2003 21