Esame di Basi di Dati
11 Giugno 2013
Matricola
CFU (9/12/9+9)
Cognome
Nome
Progetto (Sı̀/No)
Istruzioni
• I voti verranno resi disponibili su AlmaEsami. Chi vorrà rifiutare il voto
dovrà comunicarlo tassativamente 5 giorni dalla data della pubblicazione all’indirizzo [email protected], e ricevere conferma di avvenuta
ricezione della notifica. Passato questo termine, i voti di coloro che non li
hanno esplicitamente rifiutati si intendono accettati, e il docente provvederà a registrarli successivamente — il momento preciso in cui avverrà la
registrazione non è definito a priori, e può variare da appello ad appello,
l’unico termine fisso è quello dei 5 giorni per rifiutare il voto. Quanto
detto vale per i voti maggiori o uguali a 18.
• Non sarà compilato alcuno statino, e il libretto non verrà firmato. La
registrazione avviene solamente elettronicamente. Pertanto non bisogna
presentarsi fisicamente dal docente per la registrazione.
• Prima di iniziare, scrivere nome, cognome e matricola su tutti i fogli, in
modo leggibile. Nella tabella sopra riportata indicare il numero di cfu del
corso nel proprio anno di iscrizione e se si è svolto il progetto.
• Scrivere le soluzioni direttamente su questi fogli, e utilizzare i fogli protocollo solo per la brutta: i fogli protocollo verranno ritirati, ma non
verranno corretti. Si può usare il verso se necessario. Non è gradito l’uso
delle matite: si deve utilizzare una penna.
• Non si possono utilizzare libri o appunti, né tenere telefoni cellulari o altri
dispositivi di comunicazione, neanche se spenti. Il tempo a disposizione è
di due ore.
• Si consiglia di non dare soltanto le soluzioni, ma anche i ragionamenti
che hanno portato alla soluzione. Questo ci permetterà di valutare anche
risposte parziali o parzialmente false.
Firma per la presa visione delle istruzioni:
1
1
Domande a risposta multipla
1. Adottando il protocollo strict two-phase locking:
(a) una transazione abortita potrebbe lasciare il DB in uno stato inconsistente.=
(b) e’ garantita l’assenza di deadlock.
(c) tutti i lock effettuati da una transazione sono rilasciati dopo il suo
commit.
(d) si usa un solo lock esclusivo per lettura e scrittura.
2. L’attributo o insieme di attributi che identificano univocamente le ennuple
di una relazione si chiama:
(a)
(b)
(c)
(d)
identificatore
chiave
indice
chiave simmetrica
3. In SQL-92 quale comando e’ usato per aggiungere una o piu’ righe in una
tabella?
(a)
(b)
(c)
(d)
ALTER TABLE
ADD ROW
INSERT
APPEND
4. Uno degli obiettivi della normalizzazione e’:
(a)
(b)
(c)
(d)
minimizzare
minimizzare
minimizzare
minimizzare
il numero di relazioni
il numero di entita’
il numero di tabelle
la ridondanza dei dati
5. In SQL-92 si può verificare se un valore è nullo tramite il predicato:
(a)
(b)
(c)
(d)
is null.
= null.
all.
nessuno dei precedenti.
6. Il modello logico relazionale è basato sui valori, per cui:
(a) i DBMS relazionali non possono usare puntatori ne’ a livello logico
ne’ a livello fisico.
(b) i riferimenti fra i dati in strutture (relazioni) diverse sono rappresentati tramite l’utilizzo esplicito di puntatori tra record.
(c) i riferimenti fra i dati in strutture (relazioni) diverse sono rappresentati per mezzo dei valori stessi.
(d) Nessuna delle risposte precedenti.
2
2
Query
Si considerino le seguenti tabelle:
Impiegato
codImpiegato nome
1111
Paolo
2222
Mario
3333
Giovanni
4444
Carmela
Progetto
codProgetto
p1
p2
p3
p4
cognome
Rossi
Verdi
Bianchi
Neri
qualifica
Operatore grafico
Programmatore
Programmatore
Analista Programmatore
Collabora
codImpiegato
1111
1111
2222
nomeProgetto
Social.Com
GreenPlanet
Smart city
Secure home
codProgetto
p1
p2
p3
(Importante: il contenuto delle tabelle è solamente un esempio; non possono trarsi conclusioni sull’assenza o la completezza dei dati. Ad esempio non
e’ detto che non ci siano altri tipi di qualifiche oltre a quelle elencate)
1. Scrivere in SQL una query che seleziona l’elenco degli impiegati, con il
loro nome e cognome, che non collaborano al progetto ’Smart city’.
2. Scrivere in SQL una query che seleziona, per ciascun progetto, il numero
di persone che vi collaborano.
3. Scrivere in algebra relazionale una query che restituisce l’elenco degli impiegati con codImpiegato, nome e cognome, che a tutti i progetti cui
collaborano, vi collaborano per piu’ di 9 mesi.
4. Scrivere in algebra relazionale una query che restituisce l’elenco degli impiegati con codImpiegato, nome e cognome, che non partecipano a progetti
con la qualifica di ’Programmatore’ o ’Operatore grafico’.
3
mesiUomo
9
2
24
3
Progettazione
Progettare lo schema ER relativo al sistema per la gestione del personale di
un villaggio vacanze. Il personale del villaggio (di cui son mantenuti i dati
anagrafici e retributivi: nome, cognome, data assunzione, stipendio) si divide
in ’temporaneo’ e ’fisso’. I temporanei lavorano per il villaggio per periodi di
tempo determinato (es. stagione estiva di 3 mesi), non godono di ferie, ma
hanno un giorno di riposo settimanale e alcuni giorni di permesso (il cui numero
dipende dalla tipologia e dalla durata del contratto). I ’fissi’ hanno un contratto
a tempo indeterminato che prevede oltre al giorno di riposo anche 30 giorni di
ferie all’anno che possono essere utilizzati in uno o piu’ periodi di ferie. Inoltre
il personale si distingue in base al ruolo o ai ruoli svolti nel villaggio (animatore,
cuoco, istruttore sportivo). Il sistema deve registrare il giorno di riposo, il
numero di giorni di permesso utilizzati dal personale temporaneo e i periodi di
ferie utilizzati dal personale fisso.
Rappresentare le cardinalita’, le chiavi e indicare eventuali vincoli non esprimibili nel diagramma ER.
5
4
Indici
Dato il seguente b+tree:
• mostare cosa accade dopo aver inserito 59
• e successivamente cancellando 91.
6
Traccia di soluzione dell’Esame di Basi di dati
dell’11 Giugno 2013
(1) Domande a risposta multipla
1-c; 2-b; 3-c; 4-d; 5-a; 6-c.
(2) Query
1. SELECT codImpiegato, nome, cognome
FROM IMPIEGATO
WHERE cod Impiegato NOT IN
( SELECT COLLABORA.codImpiegato,
FROM PROGETTO JOIN COLLABORA
WHERE PROGETTO.codProgetto = COLLABORA.codProgetto
AND PROGETTO.nomeProgetto = ’Smart city’
)
2. SELECT PROGETTO.codProgetto, count(*)
FROM PROGETTO JOIN COLLABORA
WHERE PROGETTO.codImpiegato = COLLABORA.codImpiegato
GROUP BY PROGETTO.codProgetto
3. πCodImpiegato,N ome,Cognome (Impiegato) ./
(πcodImpiegato (Collabora) − πcodImpiegato (σmesiU omo<=9 (Collabora))
4. πCodImpiegato,N ome,Cognome (Impiegato) ./ (πcodImpiegato (Impiegato)−
πcodImpiegato (σqualif ica=0 P rogrammatore0 OR qualif ica=0 Operatore graf ico0 Impiegato ./
(Collabora)))
(3) Progettazione
BR1: Ciascun dipendente puo’ prendere un massimo di 30 giorni di ferie all’anno.
7
(4) Indici
1. Visitiamo l’albero verificando che 59 non sia gia’ presente e lo inseriamo
nel nodo opportuno:
2. Eliminiamo ora 91, dopo questa operazione l’albero e’ sbilanciato, vediamo
in figura le operazioni necessarie per bilanciare l’albero:
dopo l’eliminazione di 91 e il bilanciamento del b+tree avremo:
8
Scarica

Esame di Basi di Dati