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