Cultura Tecnologica di Progetto
Politecnico di Milano
Facoltà di Disegno Industriale
- DATABASE -
A.A. 20032003-2004
DataBase – DB – e DataBase Management System – DBMS -
• I database sono archivi che costituiscono una
memoria di lavoro indispensabile per
–
–
–
–
gestire quantità ingenti di informazioni
ordinare gli elementi utili
metterli in relazione
filtrare i dati
• La creazione di software specifici per la gestione
di banche dati, chiamati DBMS, ha permesso di
unificare in un unico programma applicativo le
funzionalità di gestione dei dati e di archiviazione
1
Nozioni di base
• I DB permettono di creare una memoria digitale
vasta e intelligente che può essere utilizzata a
diversi livelli di difficoltà
• Il database è un insieme integrato di informazioni
omogenee che fornisce una serie di strumenti
come tabelle, query, maschere e report per la
catalogazione, l’ordinamento e la ricerca di dati
• Gli elementi costitutivi di un database sono:
– CAMPO, RECORD, TABELLE, FILE
Nozioni di base /2
• CAMPO: spazio nel DB che contiene un’unità di informazione
(nome, numero, data, …). È necessario includere un campo
per ogni categoria di dati a cui si è interessati
• RECORD: insieme di campi riferiti ad un singolo oggetto
• TABELLA: elenco che visualizza più record
contemporaneamente. Ogni riga di una tabella di un
database è costituita da un record, ognuno dei quali è
suddiviso in vari campi che costituiscono le colonne
• FILE: un file di database contiene una o più tabelle e viene
salvato da Access con l’estensione .MDB (Microsoft
DataBase)
2
Riassumendo
• Un DB è composto da diverse tabelle
• Una tabella è composta da record omogenei
• Un record è composto da elementi
DB
TABELLA
ESAME
STUDENTE
CODICE
NOME
...
...
MATRICOLA
COGNOME
NOME
A0100
Matematica
...
...
...
Patente Informatica
69001
Rossi
Mario
...
69002
Verdi
Carlo
...
...
...
2XF20
...
RECORD
DB relazionale
• Un DB può essere pensato come una serie di
tabelle, ognuna delle quali contiene informazioni
omogenee
• Access è un database relazionale, ovvero in grado
di gestire più tabelle correlate: i dati non sono
memorizzati in un’unica grande tabella, ma in più
tabelle in relazione tra loro, per cui le informazioni
di diverse tabelle possono essere unite ed è
possibile eseguire ricerche ed estrarre dati da più
tabelle contemporaneamente
3
Le relazioni e i campi chiave
• Attraverso un sistema di relazioni tra i dati è
possibile combinare informazioni provenienti da
ambienti diversi ordinando l’archivio in modo
flessibile e rispondente a diverse esigenze di
ricerca
• Nel DB le relazioni sono associazioni tra tabelle
stabilite in base a uno o più elementi comuni
• I campi comuni alle diverse tabelle sono definiti
CAMPI CHIAVE, ovvero elementi di intersezione
tra i diversi insiemi di dati che consentono
all’utente di creare sottoinsiemi rispondenti alle
proprie esigenze di ricerca e assemblaggio dei dati
Le maschere
• Per facilitare l’aggiornamento, la modifica o il calcolo sui dati
è possibile creare delle maschere
• Le maschere sono simili ai comuni moduli che si devono
compilare per richiedere un documento: ad ogni campo
corrisponde un’etichetta ed è previsto uno spazio utilizzabile
per l’inserimento delle informazioni
• La peculiarità di tale strumento risiede nel fatto che i campi
di una maschera possono essere prelevati da più tabelle
diverse
• Le maschere permettono di visualizzare informazioni
secondo diverse modalità grafiche e aggiungere immagini,
note o commenti ai campi
4
Le query
• Le query sono il mezzo con cui è possibile
interrogare un database; con esse è possibile
recuperare i dati dalle tabelle e organizzarli in
modo diverso
• Le query permettono di utilizzare i dati delle
tabelle in modo dinamico, mettendo in relazione le
informazioni filtrando i dati che interessano,
effettuando ricerche incrociate sui record che
rispondono a determinate caratteristiche
SQL: definizioni
• SQL (Structured Query Language) è un
linguaggio per la formulazione di query
• Una query scritta in SQL ha la forma SelectFrom-Where
– SELECT: per indicare i campi richiesti (* per tutti)
– FROM: per indicare su quali tabelle si deve effettuare la
query
– WHERE: per indicare i vincoli
5
SQL esempio
• Ad esempio se volessimo estrarre le informazioni
dello studente la cui matricola è 69002, potremmo
scrivere la query in SQL:
SELECT Nome, Cognome
FROM Studente
WHERE matricola = 69002
• Il risultato sarà: Carlo Verdi
I report
• I report permettono di organizzare e riepilogare le
informazioni contenute in un DB riordinando i dati
provenienti da una tabella o da una query
• In genere i report sono destinati alla stampa: a
questo scopo Access offre vari layout
preformattati che possono aiutare a impaginare i
dati, dando loro una veste grafica gradevole ed
efficace
6
Progettare un database
•
Per creare un DB utile ed efficace è necessario:
– Progettarlo in modo accurato e razionale
– Riflettere sulle reali esigenze del proprio DB e sulle funzioni a cui esso
deve assolvere
– Pensare alla struttura del DB e definire i campi da includere, ovvero le
categorie da utilizzare per l’archiviazione dei dati, e suddividere i campi
tra le tabelle
– Decidere le chiavi primarie, le quali permettono di identificare in modo
univoco ogni record della tabella e progettare i campi chiave esterna
con cui è possibile collegare le varie tabelle
•
Pianificare le relazioni tra tabelle è il fulcro della
strutturazione del database: in base alle relazioni
impostate è possibile collegare i dati tra loro, effettuare
delle ricerche o filtrare i dati in relazione a più e diversi
parametri
Alcune regole
• Non ripetere le stesse informazioni in più tabelle
– Oltre a evitare ridondanze tra i dati, non si corre il rischio
di creare voci con lo stesso nome che contengano
informazioni diverse
• Fare attenzione ad inserire in ogni tabella
informazioni omogenee, così da creare una
struttura pulita che può agevolare l’archiviazione e
la ricerca dei dati
7
Progettare un DB (1)
• La fase di progettazione di un DB è complessa e
richiede molta attenzione
• Le fasi fondamentali della progettazione sono:
– definizione del modello ER
– definizione del modello logico
– implementazione del DB
Progettare (2) - Modello E/R
• Il Modello Entità Relazioni permette di individuare
e rappresentare gli attori (Entità) del DB e i
collegamenti (Relazioni) che intercorrono tra essi
• Per ogni oggetto è possibile definire delle
caratteristiche (attributi)
RELAZIONE
MATRICOLA COGNOME
NOME
STUDENTE
VALUTAZIONE
DATA
HA_SOSTENUTO
ATTRIBUTO
CODICE
NOME
ENTITA’
ESAME
8
Progettare (3) - Cardinalità
• Inoltre col modello ER si identificano anche le
cardinalità, cioè si indica il numero di volte che
una entità può partecipare alla relazione. I valori
ammessi sono: 0, 1, N
STUDENTE
0..N
HA_SOSTENUTO
0..N
ESAME
– preso uno studente, questo può aver sostenuto da 0 a N
esami
Progettare (4) - Modello Logico
• Il modello logico è una traduzione del modello ER
in una rappresentazione a tabelle. Normalmente
(ma non necessariamente)
– una entità corrisponde a una tabella
– una attributo corrisponde ad un campo
– una relazione corrisponde ad un campo o ad una tabella
chiamata “ponte”
9
Progettare (5) - Esempio
• Nell’esempio dell’archivio universitario la relazione
NN è diventata una tabella ponte
• I campi sottolineati rappresentano le chiavi
STUDENTE
MATRICOLA
COGNOME
NOME
HA_SOSTENUTO MATRICOLA
CODICE
VALUTAZIONE
ESAME
NOME
CODICE
DATA
Access (1) - Nuovo DB
• Avviamo MS-Access
• Scegliamo di creare un nuovo DB. Dobbiamo fin
da ora scegliere il file in cui verrà salvato l’intero
DB: tutti gli oggetti che compongono il DB sono
memorizzati in un unico file con estensione .MDB
• Si vedono gli oggetti su cui possiamo lavorare, tra
cui
–
–
–
–
tabelle
query
maschere
report
10
Access (2) - Nuova Tabella
• Selezioniamo “Tabelle” e premiamo “Nuovo”
• Una nuova tabella può essere creata in diversi
modi:
– definendo la sua struttura
– inserendo direttamente i dati
– sfruttando l’autocomposizione
– importando una tabella già esistente
• Scegliamo “Visualizza struttura”, in questo modo
possiamo definire di ogni campo (colonna) della tabella:
– il nome
– il tipo
– una descrizione (facoltativa)
Access (3) - Tipi di dato
Tra i tipi disponibili, troviamo:
• Numerico
–
–
–
–
–
•
•
•
•
intero (2 byte: da -32768 a 32767)
intero lungo (4 byte: circa da -2 mld a 2mld)
singola prec (4 byte: da -3*10^38 a 3*10^38)
doppia prec (8 byte: da -10^308 a 10^308)
singolo byte (interi da 0 a 255)
Testo (da 0 a 255 caratteri)
Memo, campo di testo che può contenere migliaia di caratteri
Data/ora
Contatore, normalmente un intero autoincrementale, gestito
dal DBMS (non editabile)
11
Access (4) - Chiave primaria
• Per definire una chiave primaria
– dalla visualizzazione della struttura della tabella
– si selezionano i campi (tenendo premuto CTRL per la
selezione multipla)
– si impostano come chiave in uno dei seguenti modi:
• icona nella barra degli strumenti
• menu “modifica”, comando “chiave primaria”
• menu contestuale (tasto destro), comando “chiave
primaria”
Access (5) - Proprietà dati
• Oltre alle informazioni sul nome, sul tipo e sulla
descrizione, per ogni campo si possono definire
delle proprietà, tra cui:
– dimensione
– valore predefinito: se non viene inserito niente, il
campo assume il valore qui indicato come default
– richiesto si/no: se “si”, allora il campo non può
contenere valori NULL (il campo è obbligatorio)
12
Access (6) - Salvare la tabella
• Per salvare la tabella (così come ogni altro
oggetto del DB) si usa l’icona “salva” nella barra
degli strumenti o il comando “salva” dal menu
“file”
• Quando si salva la tabella per la prima volta, ne
viene chiesto il nome
Access (7) - Esercizio 1
• Si vuole costruire un DataBase che consenta di
gestire gli studenti che sono iscritti ad una
università
• I dati da memorizzare sono:
– STUDENTE (matricola, cognome, nome, annonascita)
– ESAME (codice, nome, descrizione)
– VOTO (matricola, codice, valutazione, data)
• Creare il DB universita (universita.mdb)
• Creare la struttura delle tabelle
13
Access (8) - Relazioni
• Dopo aver definito le diverse tabelle, bisogna
indicare come le informazioni sono collegate tra
loro
• Nella definizione di tabelle ponte, porre attenzione
al tipo completo dei campi
• Per aprire la finestra delle relazioni
– icona nella barra degli strumenti, oppure
– menu “strumenti”, comando “relazioni...”
• Scegliere le tabelle che vogliamo collegare (es.
STUDENTE, VOTO, ESAME)
• Trascinare il campo di una tabella sul campo
collegato della seconda tabella
Access (9) - Integrità referenziale
• Scegliere le caratteristiche della relazione
– integrità referenziale: non è possibile aggiungere
record nella tabella correlata se nella tabella primaria
non esistono record associati (es: non riesco ad inserire
un voto di uno studente non regiatrato)
– aggiorna: se viene modificato un campo nella tabella
principale, allora viene modificato il campo associato
nella tabella correlata (es: se modifico una matricola in
STUDENTE viene aggiornata anche in VOTO)
– eliminazione: se viene eliminato un record nella tabella
primaria si eliminano anche i record associati nella
tabella correlata
14
Access (10) - Inserimento dati
• Per popolare la tabella (cioè inserire i dati veri e
propri)
– dalla finestra principale del DB
– doppio click sul nome della tabella (oppure click su
“apri”)
– si apre una finestra in cui possiamo inserire i valori
– i dati vengono salvati automaticamente all’immissione
Access (11) - Esercizio 2
• Partendo dall’esercizio 1 (universita.mdb)
• Creare le necessarie relazioni specificando i
vincoli di integrità referenziale
• Popolare il DB con dati verosimili
15
Access (12) - Query
• Tramite le query si effettuano interrogazioni sui
dati contenuti nel DB
• Una query recupera i dati da più tabelle e
visualizza i risultati, permettendo di raggruppare
record per calcolare somme, medie, ...
• Si può creare una query (dalla finestra principale
scegliere “query” e “nuovo”)
– con l’autocomposizione, oppure
– visualizzando la struttura
Access (13) - Struttura query
• Generazione query tramite “visualizzazione
struttura”:
– Scegliere le tabelle interessate nell’interrogazione (es.
STUDENTE, VOTO e ESAME)
– Trascinare i campi su cui si vuole operare, dalle tabelle
verso la “griglia di struttura” (es. STUDENTE.Cognome,
ESAME.nome, VOTO.votazione)
– Inserire eventuali criteri (es. data > 01/01/2002); per i
caratteri jolly (?, *, #) usare la parola chiave “like”
– Evidenziare i campi che si desidera visualizzare (es. non
selezionare la data)
– Salvare la query
16
Access (14) - Visualizzazioni
• Dalla barra degli strumenti (oppure dal menu
contestuale della finestra della query), si può
scegliere:
– Visualizzazione SQL (query scritta in SQL)
– Visualizzazione foglio dati (risultato)
– Visualizzazione struttura
• Perché usare SQL?
– Linguaggio standard di interrogazione
– Necessario se non si dispone di uno strumento visuale
(ad es. per interrogare un DB da un’applicazione)
Access (15) - Esercizio 3
• Partendo dall’esercizio 2 (integrità referenziale)
• Scrivere le seguenti query:
– 1 elenco studenti: estrazione del nome e del cognome
di tutti gli studenti
– 2 voti studenti: estrazione di tutti gli esami (nome
esame e votazione) sostenuti dagli studenti (nome e
cognome)
– 3 voti studenti 2002: estrazione di tutti gli esami
(nome esame e votazione) sostenuti dagli studenti
(nome e cognome) dal 01/01/2002; la data non deve
essere visualizzata
17