BASI DI DATI
1
Cos’è un database
 Un database è un insieme di informazioni correlate a un
oggetto o a uno scopo particolare, ad esempio la carriera scolastica
di uno studente.
 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
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 (righe)
Ciascuna (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
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
(riga)
SI
Attributo (colonna)
Il Dominio è costituito dai valori che ‘voto’
può assumere, cioè 18, 19 … 29, 30.
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.
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
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.
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
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.
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
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
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
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.
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
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
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)
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:
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’).
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 >>
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)
20
Layout delle relazioni
21
Immettiamo i dati nelle tabelle












CITTA
DIPLOMI
CORSI
FACOLTA
DOCENTI
INSEGNAMENTI
CORSI_FACOLTA
STUDENTI
ESAMI
ISCRIZIONI
APPELLI
PRENOTAZIONI
22