SIMULAZIONE SECONDA PROVA ESAME DI STATO (PARTE PRIMA) TRAMONTANA Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all’ingrosso (Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di vendita ai dettaglianti. Tutti i dettaglianti che intendono effettuare acquisti presso il centro devono indicare denominazione dell'azienda, indirizzo, numero di telefono, fax, e-mail, partita IVA (11 cifre). Le aziende che intendono vendere negli spazi del centro sono identificate con denominazione, indirizzo del titolare dell'azienda, numero di telefono del titolare, spazio attribuito all'interno dell'edificio (codificato con lettera e numero), numero di telefono all'interno del centro. Ai dettaglianti che intendono utilizzare il centro viene attribuita una tessera individuata con un codice e i dati anagrafici del titolare. Tutti i dettaglianti che entrano all'interno di uno spazio di vendita per un acquisto devono inserire la loro tessera in un lettore magnetico onde verificare la loro presenza, anche se non effettuano poi un acquisto. Il candidato definisca: lo schema concettuale e logico della base di dati; le relazioni della base di dati in linguaggio SQL Realizzi inoltre le seguenti interrogazioni. La ricerca di tutte le aziende che vendono all’interno del centro in ordine alfabetico. La ricerca di tutti i dati di un’azienda venditrice nel centro inserendo in ingresso una parte della sua denominazione. Il calcolo del numero di dettaglianti che hanno visitato il centro in un certo periodo. Una statistica con il calcolo del numero di visite avute per ciascuna azienda venditrice del centro. Il candidato realizzi inoltre il sito Internet del centro che deve permettere, tra l'altro, di visualizzare tutti i dati dell'aziende del centro e la ricerca di una specifica azienda venditrice anche se l'utente del sito conosce soltanto una parte della sua denominazione. Competenze verificate Produrre il progetto concettuale di un sistema informativo Tradurre un progetto concettuale nel database e nei servizi di un sistema informativo Realizzare lo schema logico di un database relazionale mediante un codice sorgente SQL Realizzare i servizi di un sistema informativo mediante query SQL Teoria ICT 3 Modulo 8 - Sistemi informativi e database Volumi di riferimento Laboratorio ICT 3 Modulo 9 - SQL Realizzazione di sistemi informativi. Access Modulo 1 - Database e realizzazione dei servizi Riflessioni per il docente Il metodo di lavoro proposto ripercorre il ciclo di vita di un sistema informativo automatizzato attraverso l’analisi, il progetto, la realizzazione e il testing. Il sistema informativo centralizzato è stato realizzato in Access impiegando l’implementazione dell’SQL nel RDBMS, per fornire la possibilità a tutti gli allievi di collaudare il sistema proposto. In allegato a questa prova è anche possibile effettuare il download del file di database CentroIngrosso.mdb, realizzato in Access 2003 (ma collaudato anche con Access 2000) che contiene: 1. le tabelle di base e le relazioni del database; 2. i servizi richiesti; 3. una maschera di avvio, che definisce (richiamando macro) una interfaccia grafica (riportata nella figura della pagina seguente) per l’utente al fine dell’aggiornamento dei dati nelle tabelle di base e dell’esecuzione delle operazioni del sistema; 4. un insieme di dati inseriti nelle tabelle di base per il testing dei servizi del sistema informativo. © 2005 RCS Libri S.p.A. – Divisione Education 1 GESTIONE DI UN CENTRO ALL’INGROSSO SIMULAZIONE SECONDA PROVA ESAME DI STATO (PARTE PRIMA) TRAMONTANA Analisi del sistema informativo Fase 1 - Specifiche per i dati Il sistema deve raccogliere e memorizzare tutti i dati relativi: alle aziende del centro che ricevono visite nel centro all'ingrosso. alle aziende dettaglianti che effettuano più visite nel centro all'ingrosso. Fase 2 - Specifiche per le operazioni Il sistema deve offrire i seguenti servizi. 1. La ricerca di tutte le aziende che vendono all’interno del centro in ordine alfabetico. 2. La ricerca di tutti i dati di un’azienda venditrice nel centro inserendo in ingresso una parte della sua denominazione. 3. Il calcolo del numero di dettaglianti che hanno visitato il centro in un certo periodo. 4. Una statistica con il calcolo del numero di visite avute per ciascuna azienda del centro. Fase 3 - Specifiche tecnologiche Il sistema informativo centralizzato può essere realizzato con un server di database, al quale possono accedere diversi utenti mediante computer, inseriti nell’intranet del centro agroalimentare. Le prime due operazioni del sistema informativo devono essere disponibili anche dal sito Web pubblicato in Internet. Fase 4 - Specifiche per il testing Per il testing del sistema informativo, ipotizzare una serie di dati iniziali (vedi ad esempio i dati nel database CentroIngrosso.mdb) ed eseguire i servizi creati verificando se i risultati ottenuti sono coerenti con lo stato della base di dati. Progetto concettuale Progetto dello schema statico (modello logico dei dati) Fatti elementari Sulla base dell’analisi del testo iniziale del problema e delle specifiche, il sistema può essere schematizzato nei seguenti fatti elementari. Un'azienda del centro può ricevere più visite. Un’azienda dettagliante può effettuare più visite. Tipi di entità e attributi © 2005 RCS Libri S.p.A. – Divisione Education 2 GESTIONE DI UN CENTRO ALL’INGROSSO SIMULAZIONE SECONDA PROVA ESAME DI STATO (PARTE PRIMA) TRAMONTANA I tipi di entità caratteristici del sistema sono: AziendeCentro Dettaglianti Visite I tipi di entità vengono individuati dai gruppi di attributi illustrati in modo dettagliato nella figura che segue. Le relazioni Le relazioni tra i tipi di entità nel modello dei dati sono individuate nel seguente diagramma Entità-Relazioni. Documentazione dello schema statico PROGETTO CONCETTUALE: Gestione centro ingrosso; INIZIO SCHEMA STATICO: TIPO DI ENTITÀ: Dettaglianti; ATTRIBUTI: TIPO: Visite ATTRIBUTO: CodiceTessera; CodiceTessera Denominazione; Titolare; Indirizzo; Telefono; FAX; Email; PartitaIVA; REGOLE: CodiceTessera: chiave primaria; CodiceTessera, Denominazione, Telefono e PartitaIVA, non possono assumere valori nulli; L’attributo CodiceTessera è un numero intero; L’attributo PartitaIVA è formato da 11 cifre (di cui la prima può anche essere lo zero); © 2005 RCS Libri S.p.A. – Divisione Education 3 GESTIONE DI UN CENTRO ALL’INGROSSO SIMULAZIONE SECONDA PROVA ESAME DI STATO (PARTE PRIMA) TRAMONTANA TIPO DI ENTITÀ: AziendeCentro; ATTRIBUTI: SpazioVendita TIPO: Visite ATTRIBUTO: SpazioVendita ; Denominazione; Titolare; Telefono; TelefonoCentro; REGOLE: SpazioVendita: chiave primaria; SpazioVendita, Denominazione, Telefono e TelefonoCentro, non possono assumere valori nulli; L’attributo SpazioVendita ha il formato LXXX, dove L è una lettera mentre X è una cifra decimale (ad esempio, A201); TIPO DI ENTITÀ: Visite; ATTRIBUTI: CodiceVisita; TIPO: AziendeCentro ATTRIBUTO: SpazioVendita; SpazioVendita TIPO: Dettaglianti ATTRIBUTO: CodiceTessera; CodiceTessera Data; Ora; REGOLE: CodiceVisita: chiave primaria; CodiceVisita, SpazioVendita, CodiceTessera, Data e Ora non possono assumere valori nulli; CodiceVisita è un numero intero che si incrementa in modo automatico per ogni inserimento di una nuova entità; Il tipo di entità Visite è soggetto al vincolo di integrità referenziale con il tipo AziendeCentro, mediante l’attributo SpazioVendita (ogni visita deve sempre fare riferimento a un'azienda del centro); Il tipo di entità Visite è soggetto al vincolo di integrità referenziale con il tipo Dettaglianti, mediante l’attributo CodiceTessera (ogni visita deve sempre fare riferimento a un'azienda dettagliante); FINE SCHEMA STATICO Progetto dello schema dinamico (le operazioni) Documentazione In base agli obiettivi del problema, la documentazione delle operazioni è la seguente. INIZIO SCHEMA DINAMICO: OPERAZIONE: aggiornamenti; DESCRIZIONE: aggiornamento della base di dati; TIPO: Aggiornamento; UTENTI: personale responsabile del centro all'ingrosso; ARGOMENTI DI INGRESSO: i dati delle entità (dettaglianti, aziende del centro e visite) da inserire, modificare o cancellare; RISULTATI: inserimento, modifica o cancellazione dei dati; OPERAZIONE: ricerca aziende del centro; DESCRIZIONE: ricerca di tutte le aziende che vendono all’interno del centro in ordine alfabetico; TIPO: Ricerca, Ordinamento UTENTI: personale responsabile del centro all'ingrosso; ARGOMENTI DI INGRESSO: nessuno; RISULTATI: tutti i dati delle aziende del centro; © 2005 RCS Libri S.p.A. – Divisione Education 4 GESTIONE DI UN CENTRO ALL’INGROSSO SIMULAZIONE SECONDA PROVA ESAME DI STATO (PARTE PRIMA) TRAMONTANA OPERAZIONE: ricerca per nome dell'azienda del centro; DESCRIZIONE: ricerca di tutti i dati di un’azienda venditrice nel centro, nota una parte della sua denominazione; TIPO: Ricerca; UTENTI: personale responsabile del centro all'ingrosso; ARGOMENTI DI INGRESSO: una parte della Denominazione di un'azienda del centro; RISULTATI: tutti i dati dell'azienda del centro ricercata; OPERAZIONE: calcolo numero dettaglianti in un periodo; DESCRIZIONE: calcolo del numero di dettaglianti che hanno visitato il centro in un certo periodo; TIPO: Ricerca, Elaborazione; UTENTI: personale responsabile del centro all'ingrosso; ARGOMENTI DI INGRESSO: Data iniziale e Data finale del periodo; RISULTATI: numero delle aziende dettaglianti che soddisfano il criterio di ricerca; OPERAZIONE: calcolo numero visite per ogni azienda del centro; DESCRIZIONE: statistica con il calcolo del numero di visite avute per ciascuna azienda del centro; TIPO: Ricerca, Elaborazione; UTENTI: personale responsabile del centro all'ingrosso; ARGOMENTI DI INGRESSO: nessuno; RISULTATI: una tabella in cui per ogni azienda del centro è riportato il numero di visite che ha avuto; FINE SCHEMA DINAMICO FINE PROGETTO. Realizzazione Passaggio dallo schema statico del progetto concettuale al modello relazionale Per la creazione dello schema logico della base di dati relazionale effettueremo i seguenti due passi. 1. Traduzione dello schema statico concettuale in un modello relazionale preliminare. 2. Applicazione delle tre forme normali per verificare se lo schema preliminare può essere ulteriormente ottimizzato. Lo schema logico relazionale del database per la gestione del centro all’ingrosso diventa quindi quello riportato nel seguito, che soddisfa le tre forme normali. © 2005 RCS Libri S.p.A. – Divisione Education 5 GESTIONE DI UN CENTRO ALL’INGROSSO SIMULAZIONE SECONDA PROVA ESAME DI STATO (PARTE PRIMA) TRAMONTANA Creazione del database Nel seguito è riportato il codice sorgente interpretato da un RDBMS (script), scritto nel linguaggio standard SQL, per la creazione dello schema logico del database. CREATE DATABASE CentroIngrosso CREATE TABLE Dettaglianti ( CodiceTessera INTEGER PRIMARY KEY, Denominazione CHAR(30) NOT NULL, Titolare CHAR(30), Indirizzo CHAR(30), Telefono CHAR(15) NOT NULL, FAX CHAR(15), Email CHAR(30), PartitaIVA CHAR(11) NOT NULL, CHECK (PartitaIVA LIKE '___________') ) CREATE TABLE AziendeCentro ( SpazioVendita CHAR(4) PRIMARY KEY, Denominazione CHAR(30) NOT NULL, Titolare CHAR(30), Telefono CHAR(15) NOT NULL, TelefonoCentro CHAR(15) NOT NULL, CHECK (SpazioVendita LIKE '____') ) CREATE TABLE Visite ( CodiceVisita INTEGER IDENTITY(1,1), SpazioVendita CHAR(4) NOT NULL, CodiceTessera INTEGER NOT NULL, Data DATE NOT NULL, Ora DECIMAL(4,2) NOT NULL, PRIMARY KEY (CodiceVisita), FOREIGN KEY (SpazioVendita) REFERENCES AziendeCentro(SpazioVendita), FOREIGN KEY (CodiceTessera) REFERENCES Dettaglianti(CodiceTessera) ) Lo script deve essere eseguito (una sola volta) in un RDBMS per la creazione delle tabelle e delle relazioni della base di dati. Creazione del database nel RDBMS Access Lo schema logico può essere realizzato in Access (in alternativa): in modo interattivo, definendo le singole tabelle di base e impostando le relazioni; nella modalità programma, eseguendo nell’ordine i 3 script SQL, documentati nella tabella che segue. La sintassi standard SQL è stata adattata a quella implementata nel RDBMS Access. Tabelle di base Codice SQL nella modalità Nome query: ScriptCreaTabellaDettaglianti CREATE TABLE Dettaglianti ( CodiceTessera INTEGER PRIMARY KEY, Denominazione CHAR(30) NOT NULL, Titolare CHAR(30), Indirizzo CHAR(30), Telefono CHAR(15) NOT NULL, FAX CHAR(15), Email CHAR(30), PartitaIVA CHAR(11) NOT NULL ); © 2005 RCS Libri S.p.A. – Divisione Education 6 GESTIONE DI UN CENTRO ALL’INGROSSO SIMULAZIONE SECONDA PROVA ESAME DI STATO (PARTE PRIMA) TRAMONTANA Nome query: ScriptCreaTabellaAziendeCentro CREATE TABLE AziendeCentro ( SpazioVendita CHAR(4) PRIMARY KEY, Denominazione CHAR(30) NOT NULL, Titolare CHAR(30), Telefono CHAR(15) NOT NULL, TelefonoCentro CHAR(15) NOT NULL ); Tabelle di base Codice SQL nella modalità Nome query: ScriptCreaTabellaVisite CREATE TABLE Visite ( CodiceVisita COUNTER PRIMARY KEY, SpazioVendita CHAR(4) NOT NULL, CodiceTessera INTEGER NOT NULL, Data DATE NOT NULL, Ora DOUBLE NOT NULL, FOREIGN KEY (SpazioVendita) REFERENCES AziendeCentro(SpazioVendita), FOREIGN KEY (CodiceTessera) REFERENCES Dettaglianti(CodiceTessera) ); Gli schemi delle tabelle di base del database sono stati poi completati in modo interattivo (nel file di database CentroIngrosso.mdb) definendo i vincoli di integrità dei dati e quelli referenziali sulle relazioni. Realizzazione dei servizi I servizi del sistema informativo sono stati realizzati in Access per cui verrà presentata l'interrogazione scritta nell’implementazione SQL di questo RDBMS (che presenta alcune differenze di sintassi rispetto allo standard SQL) e la corrispondente query creata impiegando la tecnica QBE (Query By Examples). Le interrogazioni SQL sono state collaudate digitando direttamente il codice in un oggetto Query di Access nella modalità Visualizzazione SQL. Servizio: ricerca aziende del centro Nome query: RicercaAziendeCentro Codice sorgente SQL SELECT * FROM AziendeCentro ORDER BY Denominazione ASC Query Access nella modalità QBE © 2005 RCS Libri S.p.A. – Divisione Education 7 GESTIONE DI UN CENTRO ALL’INGROSSO SIMULAZIONE SECONDA PROVA ESAME DI STATO (PARTE PRIMA) TRAMONTANA Servizio: ricerca per nome di un'azienda del centro Nome query: RicercaCentroPerNome Codice sorgente SQL SELECT * FROM AziendeCentro WHERE Denominazione LIKE "*" & [Parte del nome azienda centro:] & "*" Nel codice precedente, così come in quelli dei servizi successivi, i nomi racchiusi tra parentesi quadre (ad esempio [Parte del nome azienda centro:]) rappresentano parametri di ingresso il cui valore viene richiesto da Access prima dell'esecuzione dell'operazione con una finestra di dialogo del tipo descritta nella figura a fianco. Query Access nella modalità QBE Servizio: calcolo numero dettaglianti in un periodo Nome query: NumeroVisite Codice sorgente SQL SELECT COUNT(CodiceVisita) AS "Numero visite dettaglianti" FROM Visite WHERE Data BETWEEN [Data iniziale:] AND [Data finale:] Query Access nella modalità QBE © 2005 RCS Libri S.p.A. – Divisione Education 8 GESTIONE DI UN CENTRO ALL’INGROSSO SIMULAZIONE SECONDA PROVA ESAME DI STATO (PARTE PRIMA) TRAMONTANA Servizio: calcolo numero visite per ogni azienda del centro Nome query: StatisticaVisiteCentro Codice sorgente SQL SELECT AziendeCentro.Denominazione, COUNT(Visite.CodiceVisita) AS "Numero visite" FROM AziendeCentro INNER JOIN Visite ON AziendeCentro.SpazioVendita = Visite.SpazioVendita GROUP BY AziendeCentro.Denominazione Query Access nella modalità QBE © 2005 RCS Libri S.p.A. – Divisione Education 9 GESTIONE DI UN CENTRO ALL’INGROSSO