Microsoft Access DataBase introduzione Un database può essere definito come un insieme di archivi contenenti dati omogenei che riguardano un certo argomento. Sono database la rubrica telefonica o l'archivio dei cittadini di un comune, o gli elementi per la gestione di un magazzino. Un database efficiente e ben organizzato permette di individuare le informazioni che occorrono a un utente nel minor tempo possibile, grazie agli strumenti di ricerca e ordinamento che permettono di organizzare al meglio i dati. Microsoft Access 2 1 DataBase introduzione In un database relazionale le informazioni vengono memorizzate in più tabelle in relazione fra loro, non in una sola grande tabella. Un database deve possedere alcune caratteristiche fondamentali. Deve essere condivisibile, cioè più utenti diversi devono avere l'opportunità di accedere ai dati comuni. I dati non devono essere ridondanti, cioè non devono presentare ripetizioni. Il database deve infine essere persistente, cioè le informazioni memorizzate devono avere un tempo di vita illimitato. Microsoft Access 3 DataBase introduzione Il termine dato viene usato al posto di informazione tutte le volte che ci si riferisce ad una informazione rilevante per la gestione del problema specifico, problema che viene gestito con la creazione di una base di dati. Un dato è la registrazione di un qualsiasi oggetto descrivibile, identificabile e classificabile. Ad esempio, un libro è l'elemento base di una biblioteca, quindi le informazioni di ciascun libro costituiscono il dato fondamentale di un ipotetico database Biblioteca. Microsoft Access 4 2 DataBase introduzione Per impostare e definire correttamente un nuovo database occorre analizzare tutti gli elementi della realtà da descrivere, identificando innanzitutto due tipi di oggetti: le entità del database, ossia le diverse strutture necessarie per la memorizzazione dei dati e le relazioni tra le entità del database. Supponiamo di voler costruire un database per la gestione dei dati di un Test Center ECDL in cui vengono svolti corsi finalizzati al conseguimento della Patente Europea del Computer. Dovremo innanzitutto identificare le entità che ci servono per memorizzare correttamente i dati, in questo caso di skill card, esami, corsi e alunni. Microsoft Access 5 DataBase introduzione Per ogni entità (skill card, esami, corsi e alunni) deve essere creata una tabella, in cui vengono organizzati i dati in campi (colonne) e record (righe). Nei campi si memorizzano tipi di dati diversi (ad esempio il nome o un indirizzo); nei record si raccolgono tutte le informazioni su un elemento da registrare nel database. Ad esempio la tabella Corsi, tra l'altro, conterrà informazioni sul nome del corso, sulla data di inizio e sull'insegnante. Microsoft Access 6 3 DataBase introduzione Nella figura viene illustrata la distinzione tra campi, record e tabelle. Ciascuna caratteristica di un'entità viene definita attributo e rappresenterà un campo nella tabella. Il campo Nome corso è un campo della tabella Corsi; l'insieme dei dati che avvalorano i campi della tabella costituisce un record e l'insieme dei record costituisce la tabella. Microsoft Access 7 DataBase introduzione Le relazioni tra le tabelle sono rappresentate da frecce. Ad esempio, la freccia tra la tabella Alunni e Corsi indica la relazione che lega ciascun alunno al corso che segue o che ha seguito, e la freccia tra la tabella Corsi ed Esami indica la relazione tra gli esami che sono stati sostenuti e i corsi seguiti. Microsoft Access 8 4 DataBase introduzione Affinché i record di una tabella siano unici, è necessario definire la chiave primaria della tabella, ossia l'insieme dei campi che identificano ogni record in maniera univoca. La definizione di una chiave primaria permette di avere record distinti, non duplicati, e di reperirli in maniera più veloce. La scelta opportuna della chiave è una tra le regole più importanti da seguire per ottenere un database ben progettato. Microsoft Access 9 Costruzione di uno schema di base dati con Access Vogliamo costruire una base dati per la gestione di un archivio bibliografico L’archivio deve contenere articoli e libri Si dovranno poter fare ricerche sulla base di: titolo, autore, anno di pubblicazione, argomenti Per ogni articolo/libro saranno presenti anche la casa editrice e un breve riassunto Microsoft Access 10 5 (A1) Fase di analisi: i requisiti Vogliamo tabelle relative ad articoli o libri, della forma Titolo: …….. Autori: ………. Dati pubblicazione: (anno, editore, ecc.) Riassunto: ……… Vogliamo inserire ed aggiornare i dati Vogliamo fare delle ricerche per titolo, autore, anno, argomento Microsoft Access 11 Nota Articoli e Libri sarebbero entità distinte, ma nella nostra applicazione “ad uso personale” verranno identificate. Ci sarà cioè una sola entità di nome “Articoli o Libri” le cui istanze saranno articoli o libri. Editore, rivista, … sarebbero entità, ma nella nostra applicazione saranno rappresentate in un unico attributo di testo dati pubblicazione. Microsoft Access 12 6 (A2) Fase di analisi: entità ed attributi La prima entità è: Articolo o Libro. Altre entità: autori, argomenti Possiamo considerare come attributi di Articolo o Libro: titolo anno di pubblicazione altri dati di pubblicazione (editore, rivista, ecc.) riassunto Microsoft Access 13 (A3) Fase di Analisi: relazioni fra entità Un Articolo o Libro può avere più autori e un Autore aver scritto più articoli o libri: si ha una relazione molti-a-molti Similmente si ha una relazione molti-a-molti fra Articolo o Libro e Argomenti Per questo Autori ed Argomenti non possono essere trattati come attributi di Articolo o Libro Si procederà con più tabelle Microsoft Access 14 7 (A4) Realizzazione in Access Per la realizzazione in Access, occorre: (A4.1) Creare le Tabelle (A4.2) Collegare le tabelle con creazione delle chiavi secondarie e vincoli di integrità (A4.3) Creare delle maschere per l’inserimento di dati da un elenco Microsoft Access 15 (A4.1) Creazione tabelle in Access All’apertura di Access, selezionare Crea nuovo database (vuoto) (in seguito, la stessa operazione si potrà eseguire dal menù File/Nuovo) Si apre la seguente maschera Microsoft Access 16 8 Selezioniamo la directory Alla fine clic su Crea Indichiamo il nome della nuova base dati, ad es. DBArticoli Microsoft Access 17 Da qui si possono creare/modificare/visualizzare Tabelle, Query … Selezioniamo il tipo di oggetti su cui operare Selezioniamo il tipo di operazione Crea nuovo Microsoft Access 18 9 Facendo clic su Nuovo compare… Selezioniamo Visualizzazione Struttura Facciamo clic su OK Microsoft Access 19 Compare una finestra in cui inserire i campi e i loro tipi Tipo Eventuale descrizione testuale Nome del campo Ulteriori proprietà del campo Microsoft Access 20 10 Esempio: campo IdArticolo Nome del campo E’ un contatore Si autoincrementa Vogliamo indicizzarlo Non vogliamo duplicati Microsoft Access 21 Creazione struttura Creiamo i campi della tabella Articolo o Libro come indicato nella seguente diapositiva Microsoft Access 22 11 Per il campo Anno aggiungiamo questo vincolo (non accettiamo Pubblicazioni anteriori al 1970 o posteriori al 2100) Microsoft Access 23 Andiamo su IdArticolo e facciamo clic sulla chiave (per indicare che quella è la chiave primaria) Microsoft Access 24 12 Selezioniamo File/Chiudi, diamo OK e scegliamo il nome della tabella (Articolo o Libro) Microsoft Access 25 Microsoft Access 26 Compare la tabella nuova (vuota) 13 Facendo clic su Apri si possono inserire dei dati nella tabella Si può allargare il campo titolo portando il mouse sulla barretta e trascinando Microsoft Access Il contatore si autoincrementa 27 Non viene accettato: l’anno non soddisfa i vincoli Microsoft Access 28 14 Mettiamo 2099 come anno (questo è valido) Salviamo i dati con File/Chiudi Microsoft Access Con Apri si modifica il contenuto 29 Con Struttura si modifica la struttura (campi e loro proprietà) Microsoft Access 30 15 Fino a questo punto… Ci siamo limitati a scegliere i nomi dei campi e il loro tipo Abbiamo accettato le proprietà standard, tranne nel caso dell’Anno (abbiamo inserito un vincolo) Ora modifichiamo le proprietà dei campi… …e inseriamo un vincolo più sofisticato per l’Anno Microsoft Access 31 Per il campo Titolo Cambia dimensione (da 50 a 100) Il campo è obbligatorio: cambia Richiesto in Sì Microsoft Access 32 16 Per il campo Anno Tipo Intero (non Intero lungo) Campo obbligatorio Vogliamo cambiare la condizione di validità: cancelliamo quella vecchia e facciamo clic qui Microsoft Access 33 Anni validi: dopo il 1970 e minori o uguali all’anno corrente: Date() fornisce la data corrente, e Year(x) estrae l’anno da una data La condizione si può inserire “manualmente”, o aiutandosi con il menù che fornisce operatori, funzioni ecc. Microsoft Access 34 17 Dopo aver chiuso… …la struttura (con File/Chiudi) e aver confermato… …compare la finestra: Microsoft Access 35 Confermiamo Siccome l’ultimo record contiene un anno (2099) non valido rispetto alle nuove regole, compare la finestra Microsoft Access 36 18 A questo punto… …apriamo la tabella e correggiamo l’anno errato Provate a vedere cosa succede se inserite un anno che non rispetta il nuovo vincolo Microsoft Access 37 Tabella Autore Creiamo la tabella Autore con i seguenti campi Nome (di tipo Testo, chiave primaria) Contatto (di tipo Memo, non obbligatorio, contenente dati come indirizzo di e-mail ecc.) Microsoft Access 38 19 (A3.1) Relazioni molti-a-molti La relazione essere autore di è una relazione molti-a-molti perché: Un articolo può essere scritto da molti autori Un autore può avere scritto molti articoli IdArticolo Titolo … 1 Cani e gatti Anna Gialli 2 Canguri Giorgio Bruni 3 L’Ornitorinco Giovanni Rossi … … … Nome Mario Bianchi … … Microsoft Access 39 Come si realizza… …una relazione molti-a-molti usando solo relazioni 1-a-molti (che sono le uniche direttamente gestite dai DBMS relazionali)? Microsoft Access 40 20 IdArticolo Titolo 1 Cani e gatti … Anna Gialli 2 Canguri Giorgio Bruni 3 L’Ornitorinco … … Nome … Giovanni Rossi … Mario Bianchi IdArticolo Nome 1 Anna Gialli 1 Giovanni Rossi 2 Giovanni Rossi 3 Anna Gialli 3 Giorgio Bruni Microsoft Access … 41 Relazioni molti-a-molti: regola generale Si individuano le due tabelle da collegare: Articoli o Libri con chiave primaria IdArticolo Autori con chiave primaria Nome La relazione molti-a-molti si codifica come tabella RelArticoloAutore con campi IdArticolo,Nome IdArticolo chiave esterna con integrità referenziale, riferita alla chiave primaria di Articoli o Libri Nome chiave esterna con integrità referenziale, riferita alla chiave primaria di Autori (IdArticolo,Nome) chiave multicampo di RelArticoloAutore Microsoft Access 42 21 Chiavi multicampo Con una chiave multicampo (campo1, …, campon) non si può avere più di un record con gli stessi valori di (campo1, …, campon) Tornando al nostro esempio, la chiave multicampo (IdArticolo,Nome) evita ridondanze; ogni coppia (ident. articolo, nome autore) compare una sola volta. Microsoft Access 43 Tabella RelArticoloAutore Creiamo la tabella RelArticoloAutore con i seguenti campi IdArticolo (di tipo Intero lungo) Nome (di tipo Testo) Con la coppia (IdArticolo,Nome) come chiave Microsoft Access 44 22 Nota Abbiamo usato il Nome come chiave primaria della tabella Autori; quindi non sono ammesse omonimie (si useranno le iniziali ed altri segni distintivi). Una scelta migliore (che non faremo per brevità) potrebbe essere quella di usare una diversa chiave primaria IdAutore. In modo simile a quello visto per la relazione molti a molti Articolo o Libro - Autore Si può realizzare la relazione molti a molti Articolo o Libro - Argomento Microsoft Access 45 Per realizzare… …una chiave multicampo, aprite la tabella RelArticoloAutore (facendo clic su Struttura) Scegliamo dal menù Visualizza/Indici Modifichiamo gli indici come segue Microsoft Access 46 23 Nome dell’indice Campi dell’indice Univoco: non è possibile che la stessa coppia compaia più volte Microsoft Access 47 Dopo aver creato l’indice… …possiamo chiudere la finestra relativa alla tabella RelArticoloAutore Access vi consiglierà di creare una chiave primaria, ma voi scegliete No (potrete sempre inserire una chiave primaria in seguito se ne avrete bisogno) Microsoft Access 48 24 Creazione della relazione La tabella RelArticoloAutore realizza la relazione essere autore di Ora dobbiamo indicare che i due campi della tabella RelArticoloAutore rappresentano dei “collegamenti” con le tabelle Articolo o Libro e Autore Microsoft Access 49 Con il menù Strumenti/Relazioni si apre una finestra dal titolo “Relazioni” Dal menù Relazioni/Mostra tabella si apre una finestra di dialogo Microsoft Access 50 25 Dopo aver aggiunto tutte e tre le tabelle, facciamo clic su Chiudi Microsoft Access 51 Riordiniamo le tabelle nella finestra, mettendo la tabella con la relazione in mezzo Ora, facciamo clic su IdArticolo nella tabella Articolo o Libro e trasciniamolo su IdArticolo nella tabella RelArticoloAutore Microsoft Access 52 26 Quando rilasciamo il mouse si apre questa finestra Facciamo clic su Crea Microsoft Access 53 Ecco come compaiono le relazioni dopo aver creato anche il secondo collegamento (quello relativo al campo Nome) Microsoft Access 54 27 Dopo aver… …chiuso la finestra delle relazioni, proviamo a inserire nella tabella RelArticoloAutore gli autori dei vari articoli Per farlo dobbiamo selezionare la tabella e fare clic su Apri Microsoft Access 55 Queste associazioni sono corrette Questa è sbagliata! “Marco Mirchi” non è presente nella tabella Autori Nonostante ciò, Access accetta l’inserimento dell’associazione Microsoft Access 56 28 (A4.2) Chiavi secondarie e vincoli di integrità in Access Il problema è che non abbiamo forzato il controllo di integrità relazionale Per farlo, riapriamo la finestra delle relazioni (menù Strumenti/Relazioni) e facciamo doppio clic su ciascuna relazione… Microsoft Access 57 Si apre questa finestra Facendo clic qui si forza l’integrità referenziale Facendo clic qui si richiede che aggiornamenti su una tabella si riflettano anche sull’altra Facendo clic qui si richiede che la cancellazione di un record elimini a cascata anche i record correlati Microsoft Access 58 29 Provate a fare la stessa cosa… …anche per l’altra tabella Cosa succede? Perché? Eliminate il record sbagliato dalla tabella RelArticoloAutore e procedete di nuovo ad applicare l’integrità referenziale Microsoft Access 59 Ecco come compare l’insieme delle relazioni alla fine Microsoft Access 60 30 Provate a vedere cosa succede se… 1. 2. 3. Create un record in RelArticoloAutore in cui uno dei due valori non sia presente nella tabella corrispondente Modificate un nome di un autore nella tabella Autore; cosa succede in RelArticoloAutore Cancellate un autore dalla tabella Autore NOTA: conviene che apriate contemporaneamente tutte le tabelle e proviate a fare le modifiche su ciascuna vedendo cosa succede nelle altre… Usate Finestra/Affianca orizzontalmente Microsoft Access 61 Tabella Argomento Creiamo la tabella Argomento con un solo campo, di nome Argomento, di tipo Testo (chiave primaria, duplicati non ammessi, campo richiesto) Microsoft Access 62 31 Tabella RelArticoloArgomento Creiamo la tabella RelArticoloArgomento con i seguenti campi IdArticolo (di tipo Intero lungo) Argomento (di tipo Testo) Con la coppia (IdArticolo,Argomento) come chiave multicampo (ricordate: dovete creare un indice!) Creiamo una relazione con vincoli di integrità come evidenziato nel seguente diagramma Microsoft Access 63 Microsoft Access 64 32 Popoliamo anche la tabella RelArticoloArgomento Microsoft Access 65 (A5.3) Caselle combinate Inserendo coppie di valori in RelArticoloArgomento vi sarete resi conto della difficoltà di inserire argomenti esistenti Vorremmo che, quando dobbiamo inserire un argomento, comparisse una “tendina” contenente i valori possibili Ciò è possibile usando le caselle combinate Microsoft Access 66 33 Apriamo la struttura di RelArticoloArgomento Andiamo su Argomento e facciamo clic su Ricerca: scegliamo Casella Combinata Microsoft Access 67 Modifichiamo “Larghezza colonne” a 10cm Facciamo clic qui per scegliere da dove vanno attinti i dati Modifichiamo “Solo in elenco” a Sì (non vogliamo inserire valori che non siano nell’elenco) Microsoft Access 68 34 Scegliamo Argomento Microsoft Access 69 Proviamo ora a modificare il contenuto della tabella… Microsoft Access 70 35