Basi di dati e linguaggio SQL

Access e database in rete

Php e MySQL

Soluzione tema di esame Mercurio 2013 - seconda prova scritta di Informatica

Gestione della biglietteria online di un museo

Analisi dei dati

Le entità che possono essere individuate nel problema sono:
Visita, per rappresentare le tipologie di biglietti sia per la visita del museo (biglietto base) sia per le singole esposizioni tematiche (biglietto evento);
Servizio, per rappresentare i servizi o i prodotti accessori (ad es.: audioguida, accompagnatore specializzato, catalogo, ecc.);
Categoria, per rappresentare le categorie di visitatori che hanno diritto ad una riduzione sulle tariffe ordinarie;
Biglietto, per rappresentare i biglietti acquistati dai visitatori.

Si osservi che il biglietto, essendo non nominativo, coincide con il visitatore.

Gli attributi di Visita sono: codice identificativo, flag di tipologia del biglietto (B=base, E=esposizione), titolo, tariffa ordinaria, data di inizio, data di fine (le date hanno valore nullo nel caso del biglietto base).
Gli attributi di Servizio sono: codice, descrizione, prezzo unitario.
Gli attributi di Categoria sono: codice, descrizione, tipo di documento, percentuale di sconto
Gli attributi di Biglietto: codice identificativo, data di validità.

Associazioni
Tra l’entità Visita e l’entità Biglietto esiste un’associazione uno a molti, perché una visita o un'esposizione possono riguardare diversi visitatori, e ogni visitatore acquista un biglietto per una singola visita o esposizione.
Tra l’entità Servizio e l’entità Biglietto esiste un’associazione molti a molti, perché ad un biglietto possono essere associati molti servizi o prodotti accessori, e ogni servizio può essere acquistato da molti visitatori.
Tra l’entità Categoria e l’entità Biglietto esiste un’associazione uno a molti, perché una categoria può classificare molti visitatori, un biglietto è riferito a una sola categoria.

Modello E/R

 

Modello E/R

 


Regole di lettura
Ogni visita può registrare uno o più biglietti, ogni biglietto deve essere registrato per una sola visita.
Ogni categoria può classificare uno o più biglietti, ogni biglietto deve essere classificato con una sola categoria.
Ogni biglietto può acquistare uno o più servizio, ogni servizio può essere acquistato da uno o più biglietti.

Tabelle
Visite (IDVisita, Flag, Titolo, Tariffa, DataInizio, DataFine)
Categorie (IDCateg, Descrizione, TipoDcumento, PercSconto)
Servizi (IDServizio, Descrizione, PrezzoUnitario)
Biglietti (ID, DataValidità, Visita, Categ)
Acquisti (IDAcquisto, Quantità, Biglietto, Servizio)

Le associazioni 1:N sono state rappresentate aggiungendo nella tabella Biglietti le chiavi esterne (indicate in corsivo).
L'associazione N:N è stata rappresentata con una nuova tabella Acquisti che contiene la chiave di Biglietti, la chiave di Servizi, oltre a un attributo dell'associazione Quantità per indicare eventuali acquisti di servizi o prodotti accessori in numero superiore a 1 per un singolo biglietto.

Interrogazioni

1. Elencare i codici dei biglietti emessi per un determinato giorno

Select ID
From Biglietti
Where DataValidità = [quale 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.

Select Titolo, DataInizio, DataFine
From Visite
Where Flag = "E"
And Year(DataInizio) = [quale anno];

3. Indicare il numero di biglietti emessi per una determinata esposizione.

Select Count(*) As NumeroBiglietti
From Biglietti
Where Visita = [quale codice esposizione];

4. Calcolare il ricavato della vendita dei biglietti di una determinata esposizione.

Select Sum(V.Tariffa) As Ricavato
From Visite As V Inner Join Biglietti As B
     On V.IDVisita = B.Visita
Where V.Titolo = [quale titolo esposizione];

N.B. Il codice della quarta query rappresenta una soluzione semplificata rispetto alla richiesta del tema: in realtà si dovrebbe fare un calcolo più preciso del ricavato per tenere conto di eventuali riduzioni per particolari categorie di visitatori e dell'acquisto di servizi o prodotti accessori associati ai biglietti.