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 A
tempo a disposizione: 2 ore

Problema 1

Si richiede di progettare lo schema concettuale Entità-Relazione di un'applicazione per la gestione di lettere e consegne per Babbo Natale. Di ogni gioco interessa il nome (identificativo), il prezzo, e il peso. Ogni bambino è identificato dal suo nome, cognome e indirizzo. Di ogni bambino interessano inoltre l'età, il livello di bontà, se noto, e le lettere a Babbo Natale che ha scritto (almeno una). Di ogni lettera, che è scritta esattamente da un bambino, interessa la data in cui è stata scritta, il numero di parole, e i giochi che richiede, ciascuno in una data quantità. Si noti che ciascun bambino può scrivere al più una lettera al giorno. Le lettere si suddividono in evase e non evase. Di ogni lettera non evasa interessa la data di evasione prevista. Di ogni lettera evasa interessa il viaggio (uno ed uno solo) attraverso cui è stata evasa. Di ogni viaggio interessa la data, la lunghezza, la slitta usata (una ed una sola), e le lettere (almeno una) evase in quel viaggio. Si noti che una stessa slitta non può essere usata per più di un viaggio in una certa data. Ogni viaggio visita un insieme di bambini (almeno uno), ed interessa l'ordine in cui vengono visitati. Di ogni slitta interessa il codice (identificativo) e il numero di renne.

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 1 nel problema 3.

Problema 3

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

  1. Per ciascuna lettera non evasa, calcolare indirizzo del bambino che l'ha scritta, data in cui l'ha scritta, e data di evasione prevista.
  2. Calcolare nome, cognome, indirizzo ed età dei bambini che hanno scritto almeno una lettera evasa nella stessa data in cui è stata scritta.
  3. Calcolare data del viaggio e codice della slitta usata per quei viaggi che hanno visitato almeno un bambino le cui lettere sono state tutte evase nel viaggio stesso.
  4. Per ciascun viaggio, calcolare il peso complessivo dei giochi trasportati nel viaggio. I giochi trasportati in un viaggio sono tutti quelli richiesti nelle lettere evase in quel viaggio. Il peso complessivo deve essere calcolato mediante la somma, tenendo anche conto della quantità per ciascun gioco richiesta nelle lettere.