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