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