Upload
vanni-marino
View
215
Download
0
Embed Size (px)
Citation preview
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
1 Microsoft Access
Informaticaper laurea triennale di area non
informatica
LEZIONE N. 1
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
2 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
3 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
4 Microsoft Access
(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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
5 Microsoft Access
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.
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
6 Microsoft Access
(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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
7 Microsoft Access
(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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
8 Microsoft Access
(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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
9 Microsoft Access
(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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
10 Microsoft AccessSelezioniamo la directory
Indichiamo il nome della nuova base dati, ad es. DBArticoli
Alla fine clicsu Crea
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
11 Microsoft AccessDa qui si possono creare/modificare/visualizzare Tabelle, Query …
Selezioniamo il tipo di oggetti su cui operare Selezioniamo il tipo di operazione
Crea nuovo
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
12 Microsoft AccessFacendo clic su Nuovo compare…
Selezioniamo Visualizzazione Struttura
Facciamo clic su OK
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
13 Microsoft AccessCompare una finestra in cui inserire i campi e i loro tipi
Nome del campo
Tipo Eventuale descrizione testuale
Ulteriori proprietà del campo
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
14 Microsoft AccessEsempio: campo IdArticolo
E’ un contatore
Si autoincrementa
Vogliamo indicizzarlo
Non vogliamo duplicati
Nome del campo
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
15 Microsoft Access
Creazione struttura
• Creiamo i campi della tabella Articolo o Libro come indicato nella seguente diapositiva
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
16 Microsoft Access
Per il campo Anno aggiungiamo questo vincolo (non accettiamo Pubblicazioni anteriori al 1970 o posteriori al 2100)
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
17 Microsoft Access
Andiamo su IdArticolo e facciamo clic sulla chiave (per indicare che quella è la chiave primaria)
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
18 Microsoft AccessSelezioniamo File/Chiudi, diamo OK e scegliamo il nome della tabella (Articolo o Libro)
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
19 Microsoft Access
Compare la tabella nuova (vuota)
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
20 Microsoft AccessFacendo clic su Apri si possono inserire deidati nella tabella
Si può allargare il campo titolo portando il mouse sulla barretta e trascinando
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
21 Microsoft Access
Il contatore si autoincrementaNon viene accettato: l’anno non soddisfa i vincoli
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
22 Microsoft AccessMettiamo 2099 come anno (questo è valido)
Salviamo i dati con File/Chiudi
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
23 Microsoft Access
Con Apri si modifica il contenutoCon Struttura si modifica la struttura (campi e loro proprietà)
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
24 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
25 Microsoft AccessPer il campo Titolo
Cambia dimensione (da 50 a 100)
Il campo è obbligatorio: cambia Richiesto in Sì
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
26 Microsoft AccessPer il campo Anno
Tipo Intero (non Intero lungo)
Campo obbligatorio
Vogliamo cambiare la condizione di validità: cancelliamo quella vecchia e facciamo clic qui
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
27 Microsoft AccessAnni 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.
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
28 Microsoft Access
Dopo aver chiuso…
• …la struttura (con File/Chiudi) e aver confermato…
• …compare la finestra:
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
29 Microsoft Access
Confermiamo
• Siccome l’ultimo record contiene un anno (2099) non valido rispetto alle nuove regole, compare la finestra
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
30 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
31 Microsoft Access
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.)
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
32 Microsoft Access
(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
2 Canguri
3 L’Ornitorinco
… … …
Nome …
Anna Gialli
Giorgio Bruni
Giovanni Rossi
Mario Bianchi …
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
33 Microsoft Access
Come si realizza…
• …una relazione molti-a-molti usando solo relazioni 1-a-molti (che sono le uniche direttamente gestite dai DBMS relazionali)?
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
34 Microsoft Access
IdArticolo Titolo …
1 Cani e gatti
2 Canguri
3 L’Ornitorinco
… … …
Nome …
Anna Gialli
Giorgio Bruni
Giovanni Rossi
Mario Bianchi …
IdArticolo Nome
1 Anna Gialli
1 Giovanni Rossi
2 Giovanni Rossi
3 Anna Gialli
3 Giorgio Bruni
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
35 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
36 Microsoft Access
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.
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
37 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
38 Microsoft Access
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 moltiArticolo o Libro - Argomento
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
39 Microsoft Access
Per realizzare…
• …una chiave multicampo, aprite la tabella RelArticoloAutore (facendo clic su Struttura)
• Scegliamo dal menù Visualizza/Indici
• Modifichiamo gli indici come segue
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
40 Microsoft AccessNome dell’indiceCampi dell’indice
Univoco: non è possibile che la stessa coppia compaia più volte
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
41 Microsoft Access
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)
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
42 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
43 Microsoft Access
Con il menù Strumenti/Relazioni si apre una finestra dal titolo “Relazioni”
Dal menù Relazioni/Mostra tabella si apre una finestra di dialogo
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
44 Microsoft AccessDopo aver aggiunto tutte e tre le tabelle, facciamo clic su Chiudi
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
45 Microsoft AccessRiordiniamo le tabelle nella finestra, mettendo latabella con la relazione in mezzo
Ora, facciamo clic su IdArticolo nella tabella Articolo o Libro e trasciniamolo su IdArticolonella tabella RelArticoloAutore
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
46 Microsoft AccessQuando rilasciamo il mouse si apre questa finestra
Facciamo clic su Crea
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
47 Microsoft AccessEcco come compaiono le relazioni dopo aver creato ancheil secondo collegamento (quello relativo al campo Nome)
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
48 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
49 Microsoft Access
Queste associazioni sono corrette
Questa è sbagliata! “Marco Mirchi” non è presente nella tabella Autori
Nonostante ciò, Access accetta l’inserimento dell’associazione
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
50 Microsoft Access
(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…
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
51 Microsoft AccessSi apre questa finestra
Facendo clic qui si forza l’integrità referenziale
Facendo clic qui si richiedeche aggiornamenti su una tabella si riflettano anchesull’altra
Facendo clic qui si richiede che la cancellazione di un recordelimini a cascata anche i record correlati
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
52 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
53 Microsoft Access
Ecco come compare l’insieme delle relazioni alla fine
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
54 Microsoft Access
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 farele modifiche su ciascuna vedendo cosa succede nelle altre… Usate Finestra/Affianca orizzontalmente
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
55 Microsoft Access
Tabella Argomento
• Creiamo la tabella Argomento con un solo campo, di nome Argomento, di tipo Testo (chiave primaria, duplicati non ammessi, campo richiesto)
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
56 Microsoft Access
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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
57 Microsoft Access
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
58 Microsoft AccessPopoliamo anche la tabella RelArticoloArgomento
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
59 Microsoft Access
(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
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
60 Microsoft AccessApriamo la struttura di RelArticoloArgomento
Andiamo su Argomento e facciamo clic su Ricerca: scegliamo Casella Combinata
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
61 Microsoft AccessModifichiamo “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 vannoattinti i dati
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
62 Microsoft AccessScegliamo Argomento
Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni
63 Microsoft AccessProviamo ora a modificare il contenuto della tabella…