Insegnamento di Abilità Informatiche A.A. 2007/8 Lezione 5 Prof.ssa Raffaella Folgieri [email protected] [email protected] Link addestrativo interattivo: http://www.caspur.it/formazione/mais/ Database, DBMS e RDBMS • • • • • Un database è una “collezione di oggetti”, ovvero un insieme di informazioni (suoni, immagini, testi, numeri, ecc…) organizzati in modo tale da essere fruibili e aggiornabili. Un database rappresenta, in tal senso, una base di conoscenza. Il database è dunque l’insieme degli oggetti collezionati, non lo strumento che serve per creare la struttura. Non confondiamo il database con il DBMS (DataBase Management System, cioè Sistema per la Gestione e Creazione di un DataBase). Es. i nostri ricordi sono una base di dati. La nostra memoria è un DBMS (in particolare è un RDBMS) I vecchi modelli di database erano principalmente reticolari o gerarchici (le denominazioni ne fanno intuire la struttura). Oggi solo i database gerarchici sono tornati di moda perché modelli semplici per strutture web. Questo tipo di database si crea mediante DBMS. I database di ultima generazione sono relazionali, cioè si basano sul concetto di relazione che vedremo nelle prossime slide. Per creare database relazionali si utilizzano gli RDBMS (Relationship Database Management System, cioè sistemi per la creazione e la gestione di database relazionali, come Access, Oracle, Informix, 2 MySWl, ecc…) Modello concettuale per DBMS relazionali • • • • • • • • • Si usa il modello Entity-relationship (entità-relazione). E’ un modello concettuale Mette a disposizione costrutti per descrivere la realtà Semplice e indipendente dalla gestione dei dati all’interno di un DBMS Si deve a P. Chen (1977) Dall’analisi del caso si passa al diagramma E/R Successivamente: Traduzione del diagramma E/R in tabelle non ottimizzate Normalizzazione delle tabelle (grazie a teoria relazionale di Codd) 3 Peter Chen • Nel 1976 propone la tecnica Entity-Relationship • Insieme alla tecnica, ne propone una notazione grafica (che useremo nelle prossime slide), detta diagramma E/R (ERD – Entity Relationship Diagram) • Oggi il diagramma E/R è il più utilizzato per immediatezza e semplicità 4 Elementi principali del modello E/R Il modello si basa su tre elementi principali: • entità: classi di oggetti con proprietà comuni che li identificano come soggetti a sè • relazione: legame (logico) tra due o più entità • attributi: proprietà elementari di un’entità o di una relazione • Es. se dobbiamo creare un database di libri, avremo l’entità libro, con attributi come anno di pubblicazione, editore, autore, ma avremo anche l’entità autore, con anno di nascita e biografia. Queste due entità sono legate dalla relazione “autore ha scritto libri”(ogni autore ha scritto più libri) 5 Altri elementi del modello E/R • Molto importanti sono i vincoli di integrità che riguardano i dati: • se vi è qualche variazione negli attributi, nelle entità o nelle relazioni, queste variazioni devono rispecchiarsi in tutte le entità coinvolte nella relazione. • Es. se un autore cambia nome (es. assume uno pseudonimo), non devo andare a cambiarne il nome per ogni libro, ma lo cambierò una sola vota, nell’entità che lo descrive e la variazione sarà riportata automaticamente (dall’RDBMS) in tutti i libri che ha scritto • Abbiamo poi altri concetti importanti: • Cardinalità delle Relazioni (che vedremo nel seguito) • identificatori delle entità (chiavi) 6 Un esempio concreto • Per comprendere il modello E/R partiamo da un esempio concreto: • dobbiamo creare un database per un agente di vendita che si serve di diversi concessionari di automobili che vendono a loro volta macchine di marche diverse • Avremo le entità, sottolineate (ed i corrispondenti attributi, riportati sotto ognuna): Concessionario Automobile Produttore Nome modello denominazione Indirizzo produttore indirizzo Città colore città 7 Quante entità? • Perché abbiamo individuato le entità viste prima? • In modo che ciascuna rappresenti una categoria a sé:non possiamo “mischiare” macchine e concessionari perché hanno attributi diversi! • In tal modo ci garantiamo che: – i dati siano integri – la memoria sia occupata il meno possibile 8 Il concetto di chiave primaria • • • Tra i vari attributi ce ne deve essere uno che identifica l’entità in modo univoco. Tra gli attributi che abbiamo segnato, non ve ne sono. Aggiungiamo in grassetto le chiavi primarie, cioè quegli attributi che identificano le entità in modo unico (ovvero che ci consentano di distinguere una istanza da un’altra, cioè un concessionario in particolare o proprio quell’automobile o esattamente quel produttore): Automobile Produttore Concessionario P.IVA targa P.IVA Nome modello denominazione Indirizzo produttore indirizzo Città colore città Se non vi fosse un attributo che identifica un’entità in modo univoco, si può aggiungere un “codice” identificativo inventato (es. per i prodotti di un magazzino si ha il codice di inventario, o il codice a barre) 9 Le relazioni tra le entità 10 Il concetto di relazione • Le relazioni servono dunque ad evidenziare i rapporti esistenti tra le entità. • In tal modo i dati (attributi) che descrivono le entità potranno essere utilizzate (inserite, aggiornate, interrogate) in modo corretto. • Se le relazioni sono impostate correttamente, il database è ben disegnato. • Abbiamo visto che a livello intuitivo è piuttosto semplice enunciare una relazione, descrivendola qualitativamente attraverso una frase che definisce i rapporti tra le entità coinvolte. 11 Le relazioni tra le entità 12 Il concetto di cardinalità • • • • • • • • La cardinalità quantifica i rapporti (relazioni) tra le entità. Abbiamo tre casi di cardinalità: 1 a 1: a un’occorrenza di un’entità corrisponde una sola occorrenza di un’altra entità Un poliziotto specifico (Mario) ha un solo grado (tenente) 1 a molti: a una occorrenza di un’entità corrispondono più occorrenze di un’altra entità, ma non viceversa Es. un concessionario vende più macchine, ma non si può dire che una macchina specifica (fiat uno, rossa, targa 1234) sia venduta da più concessionari! Molti a molti: ad un’occorrenza di un’entità corrispondono più occorrenze di un’altra entità e viceversa Es. un concessionario ha a che fare con molti produttori e viceversa un produttore tratta con più concessionari 13 Lo schema E/R 14 Lo schema E/R (ERD –Chen) 15 Riassumendo • In un modello entity-relationship si considerano: • Entità • Attributi • Relazioni • Le relazioni sono espresse: • qualitativamente, attraverso il loro significato (rapporto tra le entità) • quantitativamente: quante istanze (cioè entità specifiche) di ciascuna entità sono coinvolte nella relazione • Per identificare in modo univoco un’entità, occorre individuarne la chiave primaria (attributo univoco) • Per collegare tra loro le entità occorre riportare, ove opportuno, un attributo come chiave esterna • NOTA: un’entità può essere coinvolta in più relazioni! 16 Traduzione del modello E/R in struttura fisica del database • Si utilizza un RDBMS • Le entità diventano le tabelle • Gli attributi diventano i campi (colonne) delle tabelle • Le relazioni sono indicate tramite linee che collegano le chiavi (primarie ed esterne) 17 Traduzione del modello E/R in struttura fisica del database Riprendiamo alcuni concetti circa la corrispondenza tra il modello E/R e la struttura fisica (implementazione) di una base di dati. Ricordate che: • Le entità diventano le tabelle • Gli attributi diventano i campi (colonne) delle tabelle • Le relazioni sono indicate tramite le chiavi (primarie ed esterne) 18 Riepiloghiamo… DATABASE = collezione di oggetti, ovvero contenitore di dati ACCESSnon è un database, ma è un RDBMS (Relationship DataBase Management System), ovvero un software per creare e gestire database RELAZIONALI Nella progettazione si usa il modello entità-relazione (entity-relationship), cioè si schematizzano i vari oggetti (entità) che poi saranno messi in relazione tra loro. In che modo? I dati vanno messi in tabelle. Ogni tabella contiene un tipo di dati (es. la tabella dei libri, la tabella degli autori, la tabella delle case editrici) Ogni tabella ha degli attributi, cioè dei campi in cui vanno specificati i dettagli relativi a ciascun tipo di dati. Proviamo a costruire l’esempio del database dei libri di casa… 19 Creazione di un database (1) • Apriamo Access. • Come in tutte le altre applicazioni Microsoft Office, compare la barra delle attività. Lì facciamo click sulla voce NUOVO DATABASE VUOTO. • A questo punto compare la finestra in cui Access ci chiede di assegnare il nome al database che vogliamo creare • Chiamiamo il database LIBRI-CASA 20 Creazione di un database (2) Ora dobbiamo creare le tabelle. Iniziamo con la tabella LIBRI. Vogliamo creare una tabella in cui metteremo i dati (relativi ai libri): ID-LIBRO TITOLO AUTORE CASA EDITRICE PREZZO ID-LIBRO è una chiave primaria, che distingue un libro da ogni altro, in modo unico. Può essere anche un codice messo da noi. C’è una sola chiave primaria per ogni tabella. 21 Creazione della tabella LIBRI • • Davanti a voi ora avete la finestra di database. Dovete fare due click sulla voce CREA UNA TABELLA MEDIANTE UNA CREAZIONE GUIDATA. • Scegliamo una tabella dell’ambito che ci interessa (nel nostro caso l’ambito privato) tra tutte quelle di esempio che Access ci propone, provando con quella che contiene i campi che ci sembrano più simili a quelli che vogliamo creare. • C’è proprio la tabella LIBRI, da cui scegliamo, con la freccia che li porta nel riquadro vuoto, i campi: IDLIBRO, TITOLO, NOMEEDITORE,PREZZOAQUISTO e TRADUTTORE, di cui cambiamo il nome (usando il bottone RINOMINA) in AUTORE. 22 Creazione della tabella LIBRI • • • • • • • Ora fate click sul bottone AVANTI e chiamate la tabella LIBRI. Scegliete poi CHIAVE PRIMARIA DEFINITA DALL’UTENTE (vogliamo definirla noi) Fate click ancora su AVANTI. Access ci propone proprio il campo IDLIBRO e a noi va bene. Inoltre ci propone più scelte (se vogliamo scrivere noi i valori in quel campo o se vogliamo che a ogni nuovo libro immesso, Access ponga da solo un numero progressivo. Lasciamo quest’ultima opzione. Fate ancora click su AVANTI 23 Creazione della tabella LIBRI • Ora scegliamo di modificare la struttura della tabella (così vediamo cosa abbiamo creato) e facciamo click su FINE. • Vedete che ogni campo creato ha un tipo (testo, numero, contatore) e una sua dimensione) • Per passare a visualizzare la tabella nella forma in cui immettere i valori dei campi, dobbiamo fare click sul bottoncino in alto a sinistra della schermata di access: • Questo bottone ci serve per passare dalla visualizzazione struttura alla visualizzazione dati. • Mettete qualche dato e poi chiudete la tabella con un click sulla x 24 Tabella AUTORI • Allo stesso modo creiamo la tabella AUTORI 25 Tabella AUTORI • Ignorate questa finestra (fate click su AVANTI) perché le relazioni le metteremo noi… • In ultimo scegliete la seconda opzione e mettete qualche dato nella tabella… • Possiamo crearla anche direttamente in modalità struttura, compiendo i passi: • Assegnamo un nome a ciascun campo • Per ciascun campo indichiamo il tipo (testo, numero, ecc…) • Specifichiamo eventuali attributi (caratteristiche) • Specifichiamo la chiave primaria 26 Tabella EDITORI • Allo stesso modo creiamo la tabella EDITORI (usiamo sempre la tabella autori e scegliamo i campi IDautore, COGNOME e NAZIONALITA’ che rinominiamo rispettivamente come IDeditroe, EDITORE, NAZIONE 27 Tabella EDITORI • Ignorate questa finestra (fate click su AVANTI) perché le relazioni le metteremo noi… • In ultimo scegliete la seconda opzione e mettete qualche dato nella tabella… 28 RELAZIONI • • • Ora impostiamo le relazioni tra le tabelle. Scegliete la voce RELAZIONI dal menu STRUMENTI. Compare la finestra delle relazioni e quella che vi mostra le tabelle presenti nel database (se non compare, nel menu RELAZIONI, scegliete MOSTRA TABELLE). Selezionate ogni tabella e scegliete AGGIUNGI (bottone) • Poi fate click su CHIUDI sulla finestra MOSTRA TABELLA. 29 RELAZIONI • Collegate i campi simili tra le tabelle semplicemente selezionando un campo da una tabella e “trascinandolo” (tenendo premuto il bottone sinistro del mouse) sul campo dell’altra tabella: • Un libro può avere un solo autore, ma può avere più editori (ognuna di queste è una relazione) • Poi fate click sulla x per chiudere la finestra delle relazioni e salvate alla richiesta di Access. La struttura del database è creata! 30 ALTRI ELEMENTI DI ACCESS • ACCESS consente di creare anche QUERY, MASCHERE e REPORT. • Non vedremo le MASCHERE, che servono a visualizzare la tabella in un modo più gradevole (ma potrete sempre approfondire autonomamente, utilizzando il manuale “step-by-step” a disposizione sul sito del corso). • Vedremo, invece, le QUERY, che servono a interrogare il database, cioè ad estrarre i dati secondo certi criteri (ad esempio tutti gli autori dall’ITALIA o tutti i libri scritti da PIPPO). Vedremo anche le Pagine Web, in modalità di creazione automatica. • I REPORT servono a stampare i dati in modo più gradevole e organizzato… Anche in questo caso potete approfondire da voi l’argomento. • MACRO e MODULI non sono argomenti richiesti per questo corso, perché fanno parte di comandi avanzati. Valgono comunque le stesse considerazioni fatte per maschere e report. 31 CREAZIONE DI UNA QUERY (modalità guidata) Usare la modalità di creazione guidata 1) Scegliere di ciascuna tabella o query i campi di cui si desidera recuperare i dati...(es. Tabella LIBRI) 2) scegliere se si desidera una query di dettaglio o di riepilogo (nel caso indicare le opzioni). 3) scegliere FINE. La query è creata. 4) Si possono ora impostare le condizioni. Ad Esempio se scriviamo PIPPO in corrispondenza del campo AUTORE, otterremo tutti i libri Se si sceglie di visualizzarla in scritti da PIPPO. struttura, se ne possono modificare aspetto e proprietà dei campi. Altrimenti lo si può fare selezionando la query e scegliendo di visualizzarla in modalità struttura 32 CREAZIONE DI UNA QUERY in modalità struttura Scegliere l’opzione crea una query in modalità struttura. 1)Compare una finestra da cui selezionare la/le tabelle su cui effettuare l’interrogazione. 2)Selezionare la/le tabelle desiderate e dare ogni volta aggiungi. Terminata l’operazione scegliere CHIUDI nella finestra. 3)Da ciascuna tabella trascinare i campi che si desidera visualizzare nella query. 4)Impostare il/i criteri sui campi desiderati. Se si desidera impostare più criteri, questi vanno sulla stessa riga (criteri) in corrispondenza dei relativi campi, se si desidera che i criteri vengano soddisfatti contemporaneamente. I criteri vanno invece su righe diverse (riga criteri e riga oppure) se si desidera che siano soddisfatti in alternativa (selezionare cioè i dati che soddisfano ad almeno uno dei due criteri). 33 CREAZIONE DI UNA MASCHERA Usare la modalità di creazione guidata 1) Scegliere la tabella di cui creare la maschera e selezionare i campi che servono...(ad esempio la tabella LIBRI) 2) Indicare l’aspetto desiderato, lo stile e scegliere il nome per la maschera. 3) scegliere FINE. La maschera è creata. Se si sceglie di visualizzarla in struttura, se ne possono modificare aspetto e proprietà dei campi. Altrimenti lo si può fare selezionando la tabella e scegliendo di visualizzarla in modalità struttura 34 CREAZIONE DI UN REPORT Usare la modalità di creazione guidata 1) Scegliere di ciascuna tabella (es. LIBRI) o query i campi che si desidera compaiano nel report... 2) aggiungere livelli di raggruppamento e/o criteri di ordinamento. 3) Scegliere poi l’aspetto (layout) desiderato e lo stile. 4) Impostare il nome del report. 5) scegliere FINE. Il report è creato. Se si sceglie di visualizzarlo in struttura, se ne possono modificare aspetto e proprietà dei campi. Altrimenti lo si può fare selezionando il report e scegliendo di visualizzarlo in modalità struttura 35