Cultura Tecnologica di Progetto Cultura Tecnologica di Progetto
Politecnico di Milano Politecnico di Milano Facoltà di Disegno Industriale Facoltà di Disegno Industriale
--DATABASE DATABASE --
A.A. 2003 A.A. 2003--20042004
DataBase
DataBase ––DB –DB –e DataBase Management System e DataBase Management System ––DBMS 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
Nozioni di base 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 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)
Riassumendo Riassumendo
• Un DB è composto da diverse tabelle
• Una tabella è composta da record omogenei
• Un record è composto da elementi
DB
TABELLA
RECORD
... ...
CODICE NOME
A0100 Matematica
2XF20 Patente Informatica ... ...
... ...
MATRICOLA COGNOME
69001 Rossi 69002 Verdi
... ...
ESAME
STUDENTE
...
NOME
Mario Carlo ...
DB relazionale 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ù
Le relazioni e i campi chiave 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 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
Le Le queryquery
• 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:
SQL: definizionidefinizioni
• 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
SQL
SQL esempioesempio
• 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 reportI 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
Progettare un database 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 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
Progettare
Progettareun DB (1)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
Progettare(2) -(2) -ModelloModelloE/RE/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)
STUDENTE HA_SOSTENUTO ESAME
COGNOME
MATRICOLA NOME VALUTAZIONE DATA CODICE NOME ATTRIBUTO
ENTITA’
RELAZIONE
Progettare
Progettare(3) -(3) -Cardinalità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
Progettare(4) -(4) -ModelloModelloLogicoLogico
• 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”
Progettare
Progettare(5) -(5) -EsempioEsempio
• Nell’esempio dell’archivio universitario la relazione NN è diventata una tabella ponte
• I campi sottolineati rappresentano le chiavi
MATRICOLA
STUDENTE COGNOME NOME
MATRICOLA
HA_SOSTENUTO CODICE VALUTAZIONE DATA
CODICE
ESAME NOME
Access (1)
Access (1) -- NuovoNuovoDB 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
Access (2)
Access (2) -- NuovaNuovaTabellaTabella
• 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)
Access (3) -- Tipi di Tipi di datodato
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
Access (4)
Access (4) -- ChiaveChiaveprimariaprimaria
• 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)
Access (5) -- ProprietàProprietàdatidati
• 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)
Access (6)
Access (6) -- SalvareSalvarela la tabellatabella
• 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)
Access (7) -- EsercizioEsercizio11
• 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)
Access (8)
Access (8) -- RelazioniRelazioni
• 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)
Access (9) -- IntegritàIntegritàreferenzialereferenziale
• 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
Access (10)
Access (10) --InserimentoInserimentodatidati
• 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)
Access (11) --EsercizioEsercizio22
• Partendo dall’esercizio 1 (universita.mdb)
• Creare le necessarie relazioni specificando i vincoli di integrità referenziale
• Popolare il DB con dati verosimili
Access (12) Access (12) --QueryQuery
• 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)
Access (13) --StrutturaStrutturaqueryquery
• 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
Access (14)
Access (14) --VisualizzazioniVisualizzazioni
• 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)
Access (15) --EsercizioEsercizio33
• 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