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: ____________