04 Giugno 2007
Transcript
04 Giugno 2007
Compito Basi di Dati. Tempo concesso: 120 minuti 04 Giugno 2007 Nome: ______________ Cognome: _________________ Matricola: __________ Esercizio 1 Si considerino le seguenti specifiche relative alla realizzazione di un sistema informativo per la gestione degli abbonamenti di una casa editrice e si definisca il relativo schema E/R (nella metodologia proposta a lezione). Si evidenzino eventuali vincoli inespressi e attributi derivati. Una società editrice vuole realizzare un sistema informativo per la gestione degli abbonamenti alle riviste che essa pubblica. Le riviste appartengono a diverse categorie (es. informatica, fotografia, automobilismo, ecc…) che devono essere memorizzate nel sistema. Ciascuna rivista appartiene a una sola categoria ed è caratterizzata da un codice identificativo, un nome, una breve descrizione, una periodicità (settimanale, mensile, ecc…) e un prezzo. Gli abbonamenti offerti dalla casa editrice possono essere di diversi tipi: abbonamento a una singola rivista o abbonamento a un ‘pacchetto’ di riviste (es. “casa viva” + “giardino in fiore”). Le riviste possono sia essere vendute singolarmente, sia fare parte di uno o più ‘pacchetti’. Tutte le riviste inserite nello stesso pacchetto devono avere la stessa periodicità. Per ogni abbonamento offerto dalla casa editrice si memorizzano la rivista o le riviste offerte, la durata e il prezzo. Il sistema deve memorizzare inoltre i dati relativi agli abbonamenti sottoscritti dai clienti. Per ciascun abbonamento sottoscritto si memorizzano, oltre ai dati anagrafici del cliente (codice identificativo, cognome, nome, indirizzo, telefono), un numero progressivo univoco, la data di inizio validità e la data di pagamento. Al termine del periodo di validità dell’abbonamento il cliente può decidere di rinnovarlo, pagando nuovamente il prezzo. I clienti che rinnovano l’abbonamento per più anni ottengono uno sconto sul prezzo che dipende solo dal numero di rinnovi effettuati (es. 2 rinnovi Æ sconto del 5%). La percentuale di sconto in funzione del numero di rinnovi deve essere memorizzata nel sistema. Svolgimento Compito Basi di Dati. Tempo concesso: 120 minuti 04 Giugno 2007 Matricola: ____________ Compito Basi di Dati. Tempo concesso: 120 minuti 04 Giugno 2007 Matricola: ____________ Esercizio 2 Si descriva brevemente l’algoritmo di ordinamento Sort-Merge orientato ai record, evidenziandone le principali limitazioni. È data la query: SELECT anno, COUNT(codQuadro) FROM QUADRI WHERE autore = ‘Van Gogh’ AND tecnica = ‘olio su tela’ GROUP BY anno sulla relazione: QUADRI ( codQuadro, titolo, autore, tecnica, anno ) su cui sono costruiti due indici: uno unclustered su tecnica (con NLtecnica=8 foglie) e uno clustered su autore (con NLautore=80 foglie). Si determini il migliore piano d’accesso per la risoluzione della query, tenendo conto dei seguenti dati: NP = 750, NT = 50000, NKtecnica = 10, NKautore = 50, len(codQuadro)=8 byte, len(titolo)=20 byte, len(autore)=20 byte, len(tecnica)=8 byte, len(anno)=4 byte, D=1Kbyte. Si ipotizzi di utilizzare l’algoritmo Sort-Merge a Z=3 vie per l’eventuale ordinamento del risultato. Svolgimento Compito Basi di Dati. Tempo concesso: 120 minuti 04 Giugno 2007 Matricola: ____________ Compito Basi di Dati. Tempo concesso: 120 minuti 04 Giugno 2007 Matricola: ____________ Esercizio 3 • Dato il seguente schema relazionale: PISCINA (codPiscina, nomePiscina, indirizzo, città, telefono ) CORSO ( codPiscina: PISCINA, codCorso, nome, descrizione, tipo, costo, dataInizio, dataFine) LEZIONE ((codPiscina, codCorso): CORSO, giornoSettimana, oraInizio, oraFine) 1. Si scriva l’espressione di algebra relazionale che visualizza l’elenco di corsi che non prevedono lezioni il giovedì (codPiscina, codCorso, nome, descrizione). 2. Scrivere la query SQL che visualizza i corsi tipo “nuoto principianti” che prevedono una lezione il lunedì o il mercoledì (codPiscina, codCorso, nome, descrizione, giornoSettimana). 3. Si scriva la query SQL che visualizza, per ciascun corso, il numero di lezioni settimanali previste (codPiscina, codCorso, nome, numeroLezioni). 4. Scrivere la query SQL che visualizza per ciascuna piscina il corso meno costoso (codPiscina, codCorso, nome, costo). Svolgimento Compito Basi di Dati. Tempo concesso: 120 minuti 04 Giugno 2007 Matricola: ____________