Seconda prova scritta Ministero dell Istruzione, dell Università e della Ricerca M733 ESAME DI STATO DI ISTITUTO TECNICO COMMERCIALE CORSO DI ORDINAMENTO Indirizzo: PROGRAMMATORI Tema di: INFORMATICA GENERALE ED APPLICAZIONI GESTIONALI INFORMATICA GESTIONALE Il candidato consideri inoltre il seguente scenario: un grande museo deve realizzare un Sistema Informatico per la gestione della biglietteria online. La biglietteria online consentirà di acquistare i biglietti sia per la visita del museo (biglietto base) sia per le singole esposizioni tematiche (biglietto evento). La visita e le esposizioni, sono caratterizzate da un codice identificativo, da un titolo, dalla tariffa ordinaria, dalla data di inizio e data di fine (queste ultime non valorizzate nel caso della visita). Particolari categorie di visitatori hanno diritto ad una riduzione sulle tariffe ordinarie. Per ogni categoria è registrato il codice, la descrizione, il tipo di documento da esibire per avere diritto alla agevolazione e la percentuale di sconto. Al biglietto può essere associato l acquisto di servizi o prodotti accessori (ad es.: audioguida, accompagnatore specializzato, catalogo, ecc.) dei quali viene memorizzato il codice, la descrizione e il prezzo unitario. I biglietti acquistati dai clienti non sono nominativi. Essi hanno un codice identificativo e una data di validità. Il candidato formuli ogni ipotesi accessoria che ritenga opportuna e proceda alla progettazione di una base di dati adeguata, formalizzando: lo schema concettuale; lo schema logico relazionale; i comandi necessari alla generazione di almeno due tabelle. Il candidato indichi inoltre i comandi del linguaggio di query necessari a: 1. elencare i codici dei biglietti emessi per un determinato giorno; 2. elencare i titoli e le date delle esposizioni tematiche che si sono tenute nel periodo
1 gennaio 31 dicembre di un determinato anno; 3. indicare il numero di biglietti emessi per una determinata esposizione; 4. calcolare il ricavato della vendita dei biglietti di una determinata esposizione. Il problema propone che con un biglietto è possibile visitare una mostra presente nel museo usufruendo di eventuale sconto sulla tariffa con la maggiorazione del costo di più servizi o prodotti acquistati. E possibile risolvere il problema proposto individuando le seguenti entità: ESPOSIZIONE. per rappresentare i dati relativi alle esposizioni svoltesi nel museo. Si è preferito individuare una sola entità invece delle due suggerite dal testo )spedizioni tematiche e di base). SERVIZI: per rappresentare i dati relativi servizi o gli accessori acquistati RIDUZIONI: per rappresentare le riduzioni previste BIGLIETTI: per rappresentare i dati relativi ai biglietti acquistati Poiché per ogni biglietto è possibile acquistare più prodotti fra le entità BIGLIETTI e SERVIZI si genera una relazione molti-a-molti che viene normalizzata con l ausilio di una entità COSTI_AGGIUNTIVI come dal seguente schema E/R ESPOSIZIONE È VISITATA BIGLIETTI COSTI AGGIUNTIVI USUFRUISCE Codice servizio codicebiglietto RIDUZIONI SERVIZI SCHEMA CONCETTUALE
L attributo tematica conterrà il valore BASE se la mostra non ha un tema specifico. L attributo riduzione conterrà il valore 0 se il biglietto non prevede alcuna riduzione L attributo codice servizio conterrà il valore 0 se il biglietto non prevede l acquisto di servizi aggiuntivi.
COMANDI PER LA CREAZIONE DI DUE TABELLE CREATE TABLE SERVIZI (IDservizio counter primary key, descrizione char(30), prezzo decimal) CREATE TABLE COSTIAGGIUNTIVI (ID counter primay key, codice biglietto integer, codice servizio integer foreign key codice biglietto reference biglietti.idbiglietto, foreign key codice servizio reference servizi.idservizio)
INTERROGAZIONI INTERROGAZIONE 1: elencare i codici dei biglietti emessi per un determinato giorno SELECT biglietti.idbiglietto, biglietti.datavalidita FROM biglietti WHERE (((biglietti.datavalidita)=[data richiesta])); INTERROGAZIONE 2:. elencare i titoli e le date delle esposizioni tematiche che si sono tenute nel periodo SELECT esposizione.idesposizione, esposizione.titolo, esposizione.ggmminizio, esposizione.ggmmfine, esposizione.aafine, esposizione.annoinizio FROM esposizione WHERE (((esposizione.tematica)<>"base") AND (([anno cercato]) Between [annoinizio] And [aafine])); INTERROGAZIONE 3:. indicare il numero di biglietti emessi per una determinata esposizione; SELECT Count(*) AS numero_biglietti FROM biglietti WHERE (((biglietti.[esposizionevisitata])=[codice esposizione])); INTERROGAZIONE 4: calcolare il ricavato della vendita dei biglietti di una determinata esposizione L interrogazione viene risolta attraverso due fasi: 1. Selezione delle varie voci di costo per biglietto (idbiglietto, tariffa, sconto, totale servizi) raggruppati per un tipo di tematica SELECT DISTINCTROW biglietti.idbiglietto, Sum(servizi.prezzo) AS totaleservizi, esposizione.tariffa, riduzioni.sconto, esposizione.idesposizione, ([totaleservizi]+[tariffa]- (tariffa*(sconto/100))) AS costobiglietto
FROM riduzioni INNER JOIN (esposizione INNER JOIN (biglietti INNER JOIN (servizi INNER JOIN costiaggiuntivi ON servizi.idservizio = costiaggiuntivi.[codice servizio]) ON biglietti.idbiglietto = costiaggiuntivi.codicebiglietto) ON esposizione.idesposizione = biglietti.esposizionevisitata) ON riduzioni.idriduzione = biglietti.riduzione GROUP BY biglietti.idbiglietto, esposizione.tariffa, riduzioni.sconto, esposizione.idesposizione HAVING (((esposizione.idesposizione)=[codice esposizione])); 2. Calcolo del totale dei biglietti SELECT DISTINCTROW Sum([interrigazione4_totali].[costobiglietto]) AS [Somma Di costobiglietto] FROM interrigazione4_totali;