Fila A

Transcript

Fila A
Corso di Basi di dati
Primo Compitino - Fila A
3 aprile 2007
1. Si vuole sviluppare una base di dati per gestire le crociere di una certa compagnia marittima. La compagnia
ha diverse navi. Ogni nave è caratterizzata dal nome, dal numero di posti a disposizione, dalla categoria del
servizio offerto (alto, medio, basso) e da un insieme di servizi disponibili (es. cinema, piscina, discoteca).
Il nome identifica univocamente la nave.
La compagnia organizza varie crociere. Ogni crociera è identificata da un nome. Per ogni crociera si
registra inoltre la durata (numero di giorni, minimo 7), il porto di partenza ed il porto di arrivo (se
diverso da quello di partenza). Per ogni crociera si mantengono inoltre tutti i porti toccati dalla crociera
e le giornate di arrivo e partenza in tali porti. Ogni porto è caratterizzato da un nome, che lo identifica,
e da un una città ed uno stato di appartenenza. Ad ogni porto possono essere collegate una o più attività
che i partecipanti alla crociera possono svolgere in tale porto. Ogni attività ha un titolo, un tipo, una
descrizione, una durata, ed eventualmente un costo aggiuntivo. Ogni crociera può consigliare una o più
attività per ogni porto toccato (non quelli di partenza ed arrivo). Per ogni crociera si mantiene infine la
tipologia, che può essere nazionale, se tutti i porti toccati dalla crociera appartengono alla stessa nazione,
o internazionale. Per le crociere internazionali si memorizzano i documenti richiesti per l’espatrio.
Di ogni crociera si effettuano un certo numero di partenze, ognuna caratterizzata da una data di partenza
e una data di arrivo. Il costo a persona della crociera dipende dalla data di partenza. Per ogni partenza
si vuole memorizzare la nave utilizzata per tale partenza. Tutte le partenze della stessa crociera devono
utilizzare navi con la stessa categoria di servizio offerto, mentre il numero di posti può variare in relazione
al periodo.
(a) Definire uno schema E-R per la situazione descritta. Precisare le cardinalità delle associazioni e i
vincoli di identificazione (chiavi).
(b) Indicare in modo testuale i vincoli d’integrità non catturati graficamente.
(c) Realizzare uno schema relazionale corrispondente allo schema E-R di (a), specificando chiavi e chiavi
esterne (e relative relazioni riferite).
2. Si consideri il seguente schema relazionale
Alunno(nome, cognome, classe, sezione, esito)
Insegna(classe, sezione, materia, nomeProf, cognomeProf)
Voto(nomeAlunno , cognomeAlunno , materia, voto, debito)
in cui esito può assumere valori ’ammesso’, ’non ammesso’ e debito è booleano
(a)
i. Per come sono specificate le chiavi nello schema (e intendendo come classe la coppia (classe,
sezione), quindi, ad esempio, IV H):
A. possono esistere due alunni con lo stesso nome in classi diverse? e nella stessa classe?
B. uno professore può insegnare più materie? può insegnare in più classi? può insegnare più
materie nella stessa classe?
C. una materia può essere insegnata da più professori? da più professori nella stessa classe?
ii. Mostrare un esempio di istanza della relazione Insegna che violi il vincolo di chiave primaria.
iii. Date Alunno, Insegna e Voto relazioni non vuote, Alunno 1 Insegna può essere vuota e quando?
Alunno 1 Voto può essere vuota e quando?
(b) Formulare le seguenti interrogazioni in algebra relazionale:
i. Determinare
matematica.
ii. Determinare
iii. Determinare
iv. Determinare
le classi (classe e sezione) in cui la Prof. Evelina Rossi ha dato (almeno) un 8 in
le materie di cui nessuno ha avuto debito in IV H.
le classi (classe e sezione) in cui vi è stato un solo bocciato.
i professori che hanno dato (almeno un) debito a tutti gli alunni promossi di IV H.
(c) Formulare in calcolo relazionale l’interrogazione (b)i.