1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale di area non informatica LEZIONE N. 1
2 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Obiettivo della lezione Definizione, manipolazione ed accesso ai dati nei sistemi basati sul modello relazionale Vedremo l’utilizzo dell’interfaccia visuale di Access: ogni operazione crea automaticamente un enunciato SQL che esegue quell’operazione In questa lezione, però, non vedremo la parte SQL
3 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
4 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni (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
5 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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.
6 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni (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
7 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni (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
8 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni (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
9 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni (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
10 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Selezioniamo la directory Indichiamo il nome della nuova base dati, ad es. DBArticoli Alla fine clic su Crea
11 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Da qui si possono creare/modificare/visualizzare Tabelle, Query … Selezioniamo il tipo di oggetti su cui operare Selezioniamo il tipo di operazione Crea nuovo
12 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Facendo clic su Nuovo compare… Selezioniamo Visualizzazione Struttura Facciamo clic su OK
13 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Compare una finestra in cui inserire i campi e i loro tipi Nome del campo TipoEventuale descrizione testuale Ulteriori proprietà del campo
14 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Esempio: campo IdArticolo E’ un contatore Si autoincrementa Vogliamo indicizzarlo Non vogliamo duplicati Nome del campo
15 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Creazione struttura Creiamo i campi della tabella Articolo o Libro come indicato nella seguente diapositiva
16 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Per il campo Anno aggiungiamo questo vincolo (non accettiamo Pubblicazioni anteriori al 1970 o posteriori al 2100)
17 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Andiamo su IdArticolo e facciamo clic sulla chiave (per indicare che quella è la chiave primaria)
18 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Selezioniamo File/Chiudi, diamo OK e scegliamo il nome della tabella (Articolo o Libro)
19 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Compare la tabella nuova (vuota)
20 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Facendo clic su Apri si possono inserire dei dati nella tabella Si può allargare il campo titolo portando il mouse sulla barretta e trascinando
21 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Il contatore si autoincrementa Non viene accettato: l’anno non soddisfa i vincoli
22 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Mettiamo 2099 come anno (questo è valido) Salviamo i dati con File/Chiudi
23 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Con Apri si modifica il contenuto Con Struttura si modifica la struttura (campi e loro proprietà)
24 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
25 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Per il campo Titolo Cambia dimensione (da 50 a 100) Il campo è obbligatorio: cambia Richiesto in Sì
26 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Per il campo Anno Tipo Intero (non Intero lungo) Campo obbligatorio Vogliamo cambiare la condizione di validità: cancelliamo quella vecchia e facciamo clic qui
27 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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.
28 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Dopo aver chiuso… …la struttura (con File/Chiudi) e aver confermato… …compare la finestra:
29 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Confermiamo Siccome l’ultimo record contiene un anno (2099) non valido rispetto alle nuove regole, compare la finestra
30 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
31 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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 ecc.)
32 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni (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 IdArticoloTitolo… 1Cani e gatti 2Canguri 3L’Ornitorinco ……… Nome… Anna Gialli Giorgio Bruni Giovanni Rossi Mario Bianchi…
33 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Come si realizza… …una relazione molti-a-molti usando solo relazioni 1-a-molti (che sono le uniche direttamente gestite dai DBMS relazionali)?
34 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni IdArticoloTitolo… 1Cani e gatti 2Canguri 3L’Ornitorinco ……… Nome… Anna Gialli Giorgio Bruni Giovanni Rossi Mario Bianchi… IdArticoloNome 1Anna Gialli 1Giovanni Rossi 2 3Anna Gialli 3Giorgio Bruni
35 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
36 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Chiavi multicampo Con una chiave multicampo (campo 1, …, campo n ) non si può avere più di un record con gli stessi valori di (campo 1, …, campo n ) Tornando al nostro esempio, la chiave multicampo (IdArticolo,Nome) evita ridondanze; ogni coppia (ident. articolo, nome autore) compare una sola volta.
37 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
38 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
39 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Per realizzare… …una chiave multicampo, aprite la tabella RelArticoloAutore (facendo clic su Struttura) Scegliamo dal menù Visualizza/Indici Modifichiamo gli indici come segue
40 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Nome dell’indice Campi dell’indice Univoco: non è possibile che la stessa coppia compaia più volte
41 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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)
42 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
43 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Con il menù Strumenti/Relazioni si apre una finestra dal titolo “Relazioni” Dal menù Relazioni/Mostra tabella si apre una finestra di dialogo
44 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Dopo aver aggiunto tutte e tre le tabelle, facciamo clic su Chiudi
45 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
46 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Quando rilasciamo il mouse si apre questa finestra Facciamo clic su Crea
47 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Ecco come compaiono le relazioni dopo aver creato anche il secondo collegamento (quello relativo al campo Nome)
48 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
49 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Queste associazioni sono corrette Questa è sbagliata! “Marco Mirchi” non è presente nella tabella Autori Nonostante ciò, Access accetta l’inserimento dell’associazione
50 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni (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…
51 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
52 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
53 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Ecco come compare l’insieme delle relazioni alla fine
54 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Provate a vedere cosa succede se… 1.Create un record in RelArticoloAutore in cui uno dei due valori non sia presente nella tabella corrispondente 2.Modificate un nome di un autore nella tabella Autore; cosa succede in RelArticoloAutore 3.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
55 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Tabella Argomento Creiamo la tabella Argomento con un solo campo, di nome Argomento, di tipo Testo (chiave primaria, duplicati non ammessi, campo richiesto)
56 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni 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
57 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
58 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Popoliamo anche la tabella RelArticoloArgomento
59 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni (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
60 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Apriamo la struttura di RelArticoloArgomento Andiamo su Argomento e facciamo clic su Ricerca: scegliamo Casella Combinata
61 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Modifichiamo “Larghezza colonne” a 10cm Modifichiamo “Solo in elenco” a Sì (non vogliamo inserire valori che non siano nell’elenco) Facciamo clic qui per scegliere da dove vanno attinti i dati
62 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Scegliamo Argomento
63 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Proviamo ora a modificare il contenuto della tabella…