Esame di Basi di Dati
Laurea in Ingegneria Informatica - N.O.
Laurea in Ingegneria Informatica - V.O. (1a parte)
A.A. 2003/2004 - Appello del 16/12/2003
Compito B
tempo a disposizione: 2 ore

Problema 1

Si richiede di progettare lo schema concettuale Entità-Relazione di un'applicazione per la gestione degli ordini di un'azienda. Di ogni ordine interessa la data, l'ora, il numero di telefono di riferimento, il cliente (uno ed uno solo) che lo ha effettuato, e i prodotti ordinati, ciascuno in una data quantità. Si noti che ciascun cliente può effettuare al più un ordine in una certa ora di una certa data. Gli ordini si suddividono in processati e non processati. Di ogni ordine non processato interessa l'indirizzo di consegna. Di ogni ordine processato interessa la consegna (una ed una sola) attraverso cui è stato processato. Di ogni prodotto interessa il codice (identificativo), il prezzo, e la percentuale I.V.A. Ogni cliente è identificato dal suo nome e dalla sua data di nascita. Di ogni cliente interessa inoltre il numero di anni da cui è cliente e il reddito annuo, se noto. Si noti che ciascun cliente effettua almeno un ordine. Di ogni consegna, che è relativa ad un insieme di clienti (almeno uno), interessa la data, l'ora, la durata, ed il servizio di corriere usato (uno ed uno solo). Di ogni servizio di corriere interessa il nome (identificativo) e il numero di telefono. Si noti che uno stesso servizio di corriere non può essere usato per più di una consegna in una certa ora di una certa data.

Problema 2

Si richiede di effettuare la progettazione logica dell'applicazione, producendo (in una qualunque notazione) lo schema relazionale completo di vincoli, e seguendo l'indicazione di ottimizzare lo schema relazionale rispetto all'interrogazione 2 nel problema 3.

Problema 3

Sulla base dello schema relazionale definito per il problema 2, esprimere in SQL le seguenti interrogazioni:

  1. Calcolare nome e data di nascita dei clienti che hanno effettuato almeno un ordine processato nella stessa data in cui è stato effettuato l'ordine.
  2. Per ciascuno degli ordini non processati, calcolare nome del cliente che lo ha effettuato, data in cui lo ha effettuato, e indirizzo di consegna.
  3. Per ciascuna consegna, calcolare il prezzo complessivo dei prodotti consegnati. I prodotti consegnati in una consegna sono tutti quelli relativi agli ordini processati con quella consegna. Il prezzo complessivo deve essere calcolato mediante la somma, tenendo anche conto della quantità per ciascun prodotto richiesta negli ordini.
  4. Calcolare data, ora, e nome del corriere per ogni consegna relativa ad almeno un cliente i cui ordini sono stati tutti processati con quella consegna.