MODULO 5 DATA BASE PROGRAMMA

Transcript

MODULO 5 DATA BASE PROGRAMMA
MODULO 5
DATA BASE
MODULO 5 - DATA BASE
1
PROGRAMMA
•
Introduzione:
– concetti generali di teoria
•
Progettazione
– rapida introduzione alla progettazione di DB
•
Utilizzo di Access
– pratica sulla creazione e l’utilizzo di DB
MODULO 5 - DATA BASE
2
1
Intro (1) - Data Base
•
Un DataBase (DB) è una raccolta di dati riguardanti un
determinato argomento
•
•
Tali dati sono organizzati e collegati tra loro
Un DB può avere una struttura di organizzazione dei dati
elementare o estremamente complicata, in funzione dell’ambito
applicativo e della quantità e tipologia delle informazioni da
memorizzare
Esempi di DB:
– agenda personale (contatti, calendario, appuntamenti, …)
– archivio universitario (studenti, esami, docenti, lezioni, …)
– archivio bancario (anagrafica clienti, cc, movimenti, ...)
•
MODULO 5 - DATA BASE
3
Intro (2) - Elementi
fondamentali dei DB
•
Analizzeremo di seguito i concetti di:
–
–
–
–
tabella
record
chiavi
query
– SQL
– DBMS
MODULO 5 - DATA BASE
4
2
Intro (3) - Tabelle e record
•
•
Una tabella
– è un contenitore per dati
– ogni tabella rappresenta un raccolta di informazioni su uno
specifico argomento
– ad esempio possiamo avere una tabella per gli studenti ed
una per gli esami
Un record
– è una singola riga di una tabella
– ci permette di identificare un preciso insieme di dati,
all’interno di tutti quelli contenuti nella tabella
– ad esempio nella tabella Esami ci sarà il record relativo a
“Patente Informatica”
MODULO 5 - DATA BASE
5
Intro (4) - Riassumendo
•
Un DB è composto da diverse tabelle
•
•
Una tabella è composta da record omogenei
Un record è composto da elementi
DB
TABELLA
ESAME
CODICE
STUDENTE
NOME
...
MATRICOLA
COGNOME
NOME
A0100
Matematica
...
...
...
2XF20
Patente Informatica
69001
Rossi
Mario
...
69002
Verdi
Carlo
...
...
...
...
...
MODULO 5 - DATA BASE
RECORD
6
3
Intro (5) - Chiavi
•
Per definire la struttura di una tabella si devono definire i campi
(le colonne) di cui deve essere composta
•
Una chiave di una tabella è l’insieme dei campi che permette di
identificare univocamente un singolo record all’interno della
tabella
– ogni tabella deve avere una chiave
– non è possibile avere in una tabella due record distinti con lo
stesso valore del campo chiave
– non è possibile avere chiavi contenenti valore NULL
– una chiave può essere composta da uno o più campi
– esempi di chiave: la matricola per “Studenti”, il codice esame
per “Esami”
MODULO 5 - DATA BASE
7
Intro (6) - Query
•
Dopo aver inserito i dati nel DB, dovremo aver modo di
recuperarli in modo agevole ed ottimizzato
•
Una query è un’interrogazione sul DB
– fornisce come risultato un insieme di dati che soddisfano le
condizioni imposte nella query
– normalmente negli strumenti per la gestione dei DB si ha la
possibilità di creare la query sia visualmente, sia scrivendola
in un linguaggio apposito
MODULO 5 - DATA BASE
8
4
Intro (7) - SQL: definizioni
•
SQL (Structured Query Language) è un linguaggio per la
formulazione di query
•
Una query scritta in SQL ha la forma Select-From-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
MODULO 5 - DATA BASE
9
Intro (8) - 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
MODULO 5 - DATA BASE
10
5
Intro (9) - i DBMS
•
I DBMS (Data Base Management System) sono dei software in
grado di gestire i DB. Permettono di
– creare DB (strutture di tabelle, vincoli d’integrità, …)
– gestire dati (inserirli, effettuare query, definire trigger, …)
– gestire accessi concorrenti, back up, roll back, …
•
Alcuni DBMS:
– Adabas
– MicroSoft SQLServer, MicroSoft Access
– MySQL, PostgreSQL
– Oracle DBMS
MODULO 5 - DATA BASE
11
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
MODULO 5 - DATA BASE
12
6
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
ATTRIBUTO
VALUTAZIONE
MATRICOLA
COGNOME
DATA
NOME
CODICE
NOME
ENTITA’
STUDENTE
HA_SOSTENUTO
ESAME
MODULO 5 - DATA BASE
13
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
0..N
STUDENTE
0..N
HA_SOSTENUTO
ESAME
– preso uno studente, questo può aver sostenuto da 0 a N
esami
MODULO 5 - DATA BASE
14
7
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”
MODULO 5 - DATA BASE
15
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
CODICE
NOME
MODULO 5 - DATA BASE
DATA
16
8
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
MODULO 5 - DATA BASE
17
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)
MODULO 5 - DATA BASE
18
9
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)
MODULO 5 - DATA BASE
19
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”
MODULO 5 - DATA BASE
20
10
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)
MODULO 5 - DATA BASE
21
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
MODULO 5 - DATA BASE
22
11
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
MODULO 5 - DATA BASE
23
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
•
•
•
MODULO 5 - DATA BASE
24
12
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
MODULO 5 - DATA BASE
25
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
MODULO 5 - DATA BASE
26
13
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
MODULO 5 - DATA BASE
27
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
MODULO 5 - DATA BASE
28
14
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
MODULO 5 - DATA BASE
29
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?
– Linguagio standard di interrogazione
– Necessario se non si dispone di uno strumento visuale (ad
es. per interrogare un DB da un’applicazione)
MODULO 5 - DATA BASE
30
15
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
MODULO 5 - DATA BASE
31
Access (16) - Query con
calcoli
•
Per effettuare dei calcoli si devono raggruppare i dati in base
ad uno o più campi (ad es. cognome e nome di STUDENTE)
•
poi indicare il tipo di operazione da effettuare su altri campi (ad
es. la media su votazione in VOTO)
•
Per visualizzare i tipi di operazioni e per raggruppare si deve
attivare il campo “formula” premendo l’icona “totali”; si può
scegiere tra
– raggruppamento
– min, max, media
– somma
– conteggio
MODULO 5 - DATA BASE
32
16
Access (17) - Esercizio 4
•
Partendo dall’esercizio 3
•
Scrivere le seguenti query
– 4 media voti studente: estrarre nome, cognome e
valutazione media di ogni studente
– 5 media voti esame: estrarre la valutazione media di ogni
esame
– 6 numero esami: estrarre il numero di esami sostenuti da
ogni studente
MODULO 5 - DATA BASE
33
Access (18) - Maschere
•
Le maschere permettono di visualizzare dati sullo schermo
•
Agendo attraverso le maschere si può
– inserire
– modificare
– eliminare
i dati contenuti nel DB
•
In una maschera appaiono elementi grafici, dati, calcoli
•
Tramite l’elemento grafico “controllo” si costruisce il
collegamento tra maschera e dati
MODULO 5 - DATA BASE
34
17
Access (19) - Nuova
maschera
•
Dalla finestra principale del DB scegliere “maschere” e “nuovo”
•
Si può creare una maschera
– partendo dalla struttura
– tramite un’autocomposizione
– come maschera standard
•
Tipi di visualizzazione maschera
– struttura
– maschera
– foglio dati
MODULO 5 - DATA BASE
35
Access (20) - Elementi delle
maschere
•
Elementi grafici
–
–
–
–
•
etichette
caselle di testo, combo box, list box
linee e rettangoli
immagini
Formattazione
– dimensioni, posizione, allineamento degli elementi
– tipo e dimensione carattere, stile, allineamento
– colori, bordi
MODULO 5 - DATA BASE
36
18
Access (21) - Casella testo
•
Le caselle di testo vengono usate per visualizzare i dati di una
tabella
•
Bisogna prima di tutto scegliere la tabella, tramite il comando
“origine record” nelle “proprietà” (dal menu contestuale della
maschera in visualizzazione struttura)
Disegnare con gli strumenti la casella di testo
Dall’icona “elenco campi” trascinare il nome del campo che si
vuole collegare sulla casella di testo
•
•
MODULO 5 - DATA BASE
37
Access (22) - Esercizio 5
•
Partendo dall’esercizio 4
•
Creare le seguenti maschere
– gestione tabella esami: per visualizzare, modificare,
inserire dati nella tabella ESAME
– gestione tabella studenti: per visualizzare, modificare,
inserire dati nella tabella STUDENTE
MODULO 5 - DATA BASE
38
19
Access (23) - Query come
origine record
•
Oltre che tabelle, è possibile utilizare anche delle query come
origine dei dati
–
–
–
–
–
visualizzazione struttura
menu contestuale
proprietà
origine record
scegliere una query
MODULO 5 - DATA BASE
39
Access (24) - Esercizio 6
•
Partendo dall’esercizio 5
•
Creare una maschera per visualizzare il risultato della query
“2 voti studenti”
MODULO 5 - DATA BASE
40
20
Access (25) - Report
•
Un report permette di visualizzare i dati di una tabella o il
risultato di una query, nell’ottica di ottenere un formato
stampabile
•
Per creare un report in access
– dalla finestra principale del DB
– scegliere “report”, “nuovo”
– scegliere il modo di creazione (struttura o autocomposizione)
– modificare la struttura a piacere, in modo analogo a quanto
visto per le maschere.
MODULO 5 - DATA BASE
41
Access (26) - Esercizio 7
•
Partendo dall’esercizio 6
•
Creare un report per ottenere degli stampati, suddivisi per
esame, contenenti l’elenco degli studenti che hanno sostenuto
l’esame, coi relativi voti (query 2).
MODULO 5 - DATA BASE
42
21
Soluzione query
1 elenco studenti
SELECT STUDENTE.cognome, STUDENTE.nome
FROM STUDENTE;
2 voti studenti
SELECT STUDENTE.cognome, STUDENTE.nome, ESAME.nome, VOTO.votazione
FROM STUDENTE INNER JOIN (ESAME INNER JOIN VOTO ON ESAME.codice = VOTO.codice_esame) ON
STUDENTE.matricola = VOTO.matricola_studente;
3 voti studenti 2002
SELECT STUDENTE.cognome, STUDENTE.nome, ESAME.nome, VOTO.votazione
FROM STUDENTE INNER JOIN (ESAME INNER JOIN VOTO ON ESAME.codice = VOTO.codice_esame) ON
STUDENTE.matricola = VOTO.matricola_studente
WHERE (((VOTO.data)>=#1/1/2002#));
4 media voti studenti
SELECT STUDENTE.cognome, STUDENTE.nome, Avg(VOTO.votazione) AS MediaDivotazione
FROM STUDENTE INNER JOIN VOTO ON STUDENTE.matricola = VOTO.matricola_studente
GROUP BY STUDENTE.cognome, STUDENTE.nome, STUDENTE.matricola;
5 media voti esame
SELECT ESAME.nome, Avg(VOTO.votazione) AS MediaDivotazione
FROM ESAME INNER JOIN VOTO ON ESAME.codice = VOTO.codice_esame
GROUP BY ESAME.codice, ESAME.nome;
6 numero esami
SELECT STUDENTE.cognome, STUDENTE.nome, Count(VOTO.codice_esame) AS ConteggioDicodice_esame
FROM STUDENTE LEFT JOIN VOTO ON STUDENTE.matricola = VOTO.matricola_studente
GROUP BY STUDENTE.matricola, STUDENTE.cognome, STUDENTE.nome;
MODULO 5 - DATA BASE
43
FINE
•
•
•
•
Spostare nel cestino le cartelle ed i file creati
Svuotare il cestino
Chiudere tutte le finestre aperte
Arrestare il sistema
MODULO 5 - DATA BASE
44
22