MS Access
Paolo ManghiISTI-CNRE-mail: [email protected]
Paolo Manghi
Problema Gestione delle informazioni relative
ad un’Organizzazione Inserimento, modifica, cancellazione
ed elaborazione delle informazioni
Organizzazioneinput
esterni
richiestadi servizi e
risposta
processi interni di aggiornamento e analisi
Paolo Manghi
Soluzione: archivi Trovare il modo di conservare e
organizzare le informazioni interessanti di una realtà per poterle recuperare ed elaborare
Anni ’70: archivi cartacei Oggi: archivi elettronici, database Gli archivi sono un modello della parte
della realtà che si ritiene interessante
Paolo Manghi
Progettazione di un archivio È improponibile progettare un archivio sulla
base del solo universo del discorso e senza l’adozione di metodologie di progettazione
Un modello (es. un database) è il risultato di un processo di interpretazione, guidato dalle idee e conoscenze possedute dal soggetto che interpreta
Definire un modello è un’operazione complessa (intuizione e metodo)
Paolo Manghi
Metodologie Esistono metodologie di modellazione che forniscono gli
strumenti e linguaggi per: individuare e rappresentare le componenti interessanti
dell’universo del discorso, al fine di realizzarne un modello concettuale;
per successivamente convertire il modello concettuale in un database relazionale
Il modello concettuale descrive la realtà in maniera intuitiva (“poco” informatica) ed è allo stesso tempo facilmente trasformabile in un database, cioè in un modello della realtà interpretabile da un computer
Paolo Manghi
Modellazione e progettazione
Organizzazione A B
BA
DatabaseArchiviocartaceo
ERModello
concettuale
Mappatura in modello
relazionale equivalente
Creazione DB
Soluzione anni ‘70
Paolo Manghi
Linguaggio per la definizionedi modelli: formalismo grafico ER
Descrizione della natura della realtà in termini di classi e associazioni
Il modello ER di un universo del discorso è detto schema
Paolo Manghi
ER: classi e attributi
nome
telefono
lingueParlate
multivalore
totale
parziale unione
strutturato
Attributi
Persone
Si modellano le classi, cioè collezioni di entità dalla struttura omogenea
La classe Persone: una collezione di entità persone con proprietà lingueParlate, telefono, nome
Paolo Manghi
Es. Associazioni (1:1)(1:1) associazione CorsiTenuti-TenutoDa tra Professori e Corsi: ogni professore deve tenere un corso (totale) e ogni Corso è tenuto da un professore (totale)
Professori Corsi
corsoTenuto tenutoDa
Aspetto linguistico
Paolo Manghi
Es. Associazioni (1:n)(1:n) associazione Tesista-Relatore tra Professori e Studenti: ogni professore può avere uno, nessuno o più tesisti (parziale), mentre uno studente può avere nessuno o un relatore (parziale)
Professori Studenti
relatoreDi tesistaDi
Aspetto linguistico
Paolo Manghi
Es. Associazioni (n:n)(n:n) associazione CorsiSeguiti-StudentiIscritti tra Studenti e Corsi: ogni studente segue almeno un corso (totale) e ogni corso è seguito da almeno uno studente (totale)
Aspetto linguistico
Corsi Studenti
studentiIscritti corsiSeguiti
Paolo Manghi
Esempio:Segreteria dell’Univ. di Pisa
Gestione degli studenti e degli esami da essi passati
Le classi di entità in gioco sono Classe degli Studenti: tutti gli studenti iscritti
all’università, con proprietà Nome, Matricola, Provincia, Data di nascita
Classe degli Esami: tutti gli statini (prove ufficiali) reative agli esami passati dagli studenti, con proprietà Corso, Voto, Lode, Data, Candidato.
Paolo Manghi
Modello concettuale
Esami
esamiSuperati passatoDa
Studenti
Paolo Manghi
Soluzione anni ’70 (1/2)
Uno schedario di studenti Ad ogni studente corrispondeva una
scheda con tutti i suoi dati: • nome, matricola, provincia, data di nascita
Uno schedario degli esami Ad ogni esame sostenuto corrispondeva
uno statino: • candidato, voto, lode (si/no), data, corso
Paolo Manghi
Soluzione anni ’70 (2/2)
Per cercare gli esami passati dagli studenti di Pisa, l’impiegato doveva: Cercare nello schedario studenti tutte le
schede relative a studenti di Pisa Per ogni scheda trovata:
• leggere il numero di matricola• Cercare nello schedario degli esami, tutti gli
statini relativi al numero di matricola dello studente
Paolo Manghi
Soluzione con Database Relazionale
Un database relazionale Una collezione di dati elettronici che
rappresentano/modellano una realtà di interesse
Ad ogni collezione di entità nella realtà di interesse corrisponde una tabella nel database
Paolo Manghi
Tabella Studenti
25/12/1980PI175649Bonini
12/07/1978LI179856Bianchi
03/10/1975LU167459Rossi
01/01/1980PI171523Isaia
DataNascitaProvinciaMatricolaNomeRecord
Campo
Valore
Struttura tabella:Nome: TextMatricola: NumberProvincia: Text(2)DataNascita: Date
Paolo Manghi
Tabella Esami
Struttura tabella:Corso: TextCandidato: TextData: DateVoto: Number(2)Lode: Si/No
30 No13/02/01BianchiFP
18 No11/02/01IsaiaLMM
25 No15/01/01BoniniBD
30 Si15/01/01RossiBD
28 No12/01/01IsaiaBD
Voto LodeDataCandidatoMateria
Paolo Manghi
Struttura Tabella Una tabella è una collezione di dati caratterizzati
dalla stessa struttura: Insieme di coppie (NomeCampo,TipoCampo) Un tipo qualifica quali valori possono essere
inseriti in un campo e di conseguenza quali operazioni sono consentite su di esso:
• Nome in Studenti è un campo di tipo Text: una sequenza di caratteri di lunghezza arbitraria; due valori Text possono essere concatenati per ottenerne uno solo che li mette insieme
• DataNascita è un campo di tipo Date: un valore di tipo gg/mm/aaaa; un valore Date può essere passato a funzioni che ritornano l’anno, il giorno o il mese del valore.
Paolo Manghi
Chiave Primaria (1/3)
Definizione: se un campo di una tabella è definito come chiave primaria, non esistono due record nella tabella che hanno gli stessi valori per quel campo
Uso: la chiave primaria di ogni tabella è definita da chi definisce il database, per avere modo di distinguere univocamente i record di una tabella
Paolo Manghi
Chiave Primaria (2/3)
Nella realtà degli studenti non esistono due studenti con la stessa matricola Nella tabella Studenti la chiave primaria dichiarata è il
numero di matricola Ogni tentativo di inserire nella tabella il record di uno
studente che ha lo stesso valore del campo matricola di un altro già presente nella tabella, viene impedito e causa un messaggio di errore
Paolo Manghi
Chiave Primaria (3/3)
Nella realtà degli Esami?Nella realtà degli Esami non possono esistere due
esami con lo stesso candidato e la stessa materia:
la chiave primaria dichiarata è la coppia di campi (materia, candidato) in alternativa un nuovo campo, codiceEsame: a volte può essere conveniente definire una proprietà fittizia, non presente nella realtà di interesse, che compia la funzione di chiave primaria (ad esempio quando la chiave reale è composta da troppi campi)
Paolo Manghi
Chiave Esterna (1/3)
Ultima nozione fondamentale è quella di Chiave Esterna di una tabella
Una chiave esterna è un campo che contiene il valore di una chiave primaria: Questo mette in relazione il record che
contiene un certo valore per la chiave esterna con il record, in un’altra tabella, che contiene quel valore per la chiave primaria
Paolo Manghi
Chiave Esterna (2/3)
Per i nostri scopi, in quale tabella dell’esempio deve essere definita una chiave esterna?
Quale campo potrebbe essere chiave esterna?Nella tabella Esami
Nessuno: nessun campo della tabella ha valori nella chiave primaria della tabella Studenti
Paolo Manghi
Chiave Esterna (3/3)
Se si definisse il campo Candidato come chiave esterna, quali problemi potremmo avere?
Studenti omonimi: in una ricerca, gli esami passati da studenti diversi con lo stesso nome verrebbero associati ad entrambi gli studenti!!!
Paolo Manghi
Tabella Esami corretta
Struttura tabella:Corso: TextCandidato: NumberData: DateVoto: Number(2)Lode: Si/No
La tabella Esami deve essere definita come:
3013/02/01179856FP
1811/02/01171523LMM
2515/01/01175649BD
3015/01/01167459BD
2812/01/01171523BD
VotoDataCandidatoMateria
30 No
18 No
25 No
30 Si
28 No
Voto Lode
Paolo Manghi
Relazione tra tabelle
Nome Matricola Provincia DataNascita
Isaia 171523 PI 01/01/1980
Corso Candidato Data Voto
BD 171523 12/01/01 29
Studenti
Esami
Il campo Candidato è chiave esterna di Esami. Contiene valori della chiave primaria Matricola di Studenti. Il valore di Candidato mette in relazione il relativo record con il record dello studente che ha passato l’esame.
Paolo Manghi
Schema relazionale
EsamiStudenti
Data
VotoCandidato*
LodeCorso
DataNascita
ProvinciaNome
Matricola
Esami
esamiSuperati passatoDa
Studenti
Paolo Manghi
Ricerca dei dati Un database relazionale consente la ricerca
dei dati attraverso un particolare linguaggio di interrogazione detto SQL
In SQL è possibile formulare richieste del tipo: Singola tabella:
• Dammi i nomi degli studenti nati prima del 1980• Dammi tutti gli esami passati prima del 12/31/2001
Tabelle multiple:• Dammi tutti i nomi e i voti dei corsi che sono stati passati
da studenti di Pisa• Dammi il nome degli studenti e il numero di esami da essi
passati tra il 2000 e il 2001
Paolo Manghi
MS Access (1/2)
Un Sistema per la Gestione di Basi di Dati (SGBD), altrimenti detto DataBase Management System (DBMS)
Paolo Manghi
MS Access (2/2)
Un insieme di strumenti per la Gestione automatica ed efficiente del
database:• Definizione delle tabelle (campi e tipi) e delle
relazioni tra di esse• Query di inserimento, cancellazione, modifica e
ricerca dei record nelle tabelle
Definizione di applicazioni con interfacce utente per la gestione del database Maschere e Report
Paolo Manghi
Esercizio Definire un database Access che consenta la
gestione delle informazioni relative agli Agenti dell’FBI. Di ogni agente interessa il nome, il codice e la data di assunzione. Ogni agente lavora per un dipartimento, il quale è caratterizzato da una specializzazione (stragi, cospirazioni, guerre, etc.). Ci interessa fare ricerche sugli agenti in base a continente, stato e indirizzo dei
dipartimenti per cui lavorano; sui dipartimenti in base alle date di assunzione degli
agenti; altro...
Paolo Manghi
Definizione del database
Creazione delle tabelle Attributi e tipi
Creazione delle associazioni Integrità referenziale Cancellazione e modifica a cascata Caselle combinate
Inserimento dati: rispetto dell’integrità referenziale
Paolo Manghi
Definizione delle query Selezione della tabella coinvolta Selezione degli attributi coinvolti
Da visualizzare Da sottoporre a vincoli (And e Or)
Query a più tabelle Concetto di giunzione
Una query è a tutti gli effetti una tabella I record vengono calcolati dinamicamente al momento della
esecuzione Può essere utilizzata per effettuare altre query
Paolo Manghi
Query: tipologie Query per la ricerca
Selezione e visualizzazione di record Query per il calcolo
Max, min, media, somma, etc.
Paolo Manghi
Esercizio: il database Catena di agenzie immobiliari. Degli acquirenti ci
interessa il nome il telefono, la città in cui intendono comprare, i mq desiderati e la cifra che sono disposti a spendere. Dei proprietari ci interessa sapere il nome, il telefono e le case in vendita. Delle case ci interessano i mq, il prezzo, l’indirizzo e i proprietari. Delle agenzie ci interessa sapere il nome, il comune, la provincia, il telefono, i clienti e i venditori.
Sappiamo che: ogni venditore può riferirsi solo all’agenzia del comune in
cui vende Ogni città ha una sola agenzia
Paolo Manghi
Esercizio:le query Trovare il nome, il telefono e i mq di chi vende a Milano
una casa per meno di 150.000 Euro Trovare il nome, il telefono e gli Euro di chi intende
acquistare una casa di 80mq a Roma Trovare il prezzo medio delle case in vendita a Parma Trovare i prezzo massimo tra tutte le case in vendita a
Pontedera (PI) e Empoli (FI) Trovare il nome, il comune, la privincia e il numero di
telefono delle agenzie che hanno acquirenti per la provincia di Pisa
Trovare tutti i nomi e i telefoni dei venditori e degli acquirenti le cui richieste in mq e Euro hanno uno scarto di 20mq e 10.000 Euro rispettivamente.
Paolo Manghi
Esercizio: il database Ci interessa trattare i dati delle sale
cinematografiche italiani. Di ogni cinema interessa sapere il nome, la città e le
sale. Le sale sono caratterizzate da un nome, da un film in
proiezione, dal prezzo del biglietto, data di inizio e di fine proiezione del film e dal numero di posti a sedere.
[Dei film interessa sapere il titolo, il regista e l’anno di uscita.]