Esame di Basi di Dati
17 Febbraio 2014
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. Quale di questi non è un operatore monadico in algebra relazionale
(a) join
(b) proiezione
(c) selezione
(d) ridenominazione
2. Il modello relazionale si dice essere basato su valori perchè:
(a) fra le tuple di una relazione è definito un ordinamento basato sul
valore degli attributi
(b) i riferimenti tra i dati in relazioni diverse sono rappresentati per
mezzo di valori degli attributi
(c) come nella relazione matematica gli elementi sono individuati per
valore
(d) tutte le precedenti
3. Una tabella rappresenta una relazione se
(a) le righe sono diverse fra loro
(b) le intestazioni delle colonne sono diverse tra loro
(c) i valori di ogni colonna sono fra loro omogenei
(d) tutte le precedenti
4. Quale dei seguenti può essere un vincolo di ennupla?
(a) un vincolo interrelazionale
(b) un vicolo di integrità referenziale tra due relazioni
(c) (Voto = 30) OR NOT (Lode = ’e lode’)
(d) tutti i precedenti
5. In una SELECT SQL si fa riferimento a una vista:
(a) mediante la parola chiave VIEW
(b) come se fosse una relazione di base
(c) come se fosse una relazione di base solo se è una vista materializzata
(d) mediante la parola chiave FOREIGN
6. In SQL una primary key:
(a) deve essere definita su un singolo attributo
(b) può essere definita su più attributi
(c) può assumere il valore null
(d) può avere null come valore di default
2
2
Query
Si considerino le seguenti tabelle:
Via
codVia
11234
21234
31234
41234
ZonaTL
codZona
1
2
3
Multa
codMulta
111
222
333
444
nome
San Vitale
Indipendenza
Farini
Castiglione
multaEuro
40
50
70
codVia
11234
11234
31234
21234
codZona
2
1
3
3
oraInizioDivieto
10
8
10
targa
LE2078937
AB67554M
CD88776H
ED15611T
oraFineDivieto
15
20
12
data
10/07/2010
25/12/2012
18/09/2013
28/11/2013
(Importante: il contenuto delle tabelle è solamente un esempio; non possono trarsi conclusioni sull’assenza o la completezza dei dati.)
1. Scrivere in SQL una query che restituisce la targa delle auto che hanno
preso più di 2 multe nella stessa via dal primo gennaio 2013 in poi.
2. Scrivere in SQL una query che restituisce il nome e la quantità di multe
per ogni via non vietata dalle ore 17
3. Scrivere in algebra relazionale una query che restituisce le vie che prevedono una multa maggiore o uguale a 50 euro e non hanno mai registrato
multe
4. Scrivere in algebra relazionale una query che restituisce le ore di fine divieto per tutte le zone dove l’auto con targa AB67554M non ha preso una
multa
3
3
Progettazione
Si vuole progettare un database per raccogliere dati riguardanti pubblicazioni
scientifiche provenienti dalle università.
Nel database si vogliono memorizzare i dati riguardanti ogni autore, ovvero
nome, cognome e data di nascita, che insieme rendono possibile l’identificazione
univoca dell’autore, e l’email. Ogni autore fa parte di un dipartimento, con
un nome e un’università di appartenenza. Si vuole memorizzare la data per
l’afferenza di ogni autore al suo dipartimento. Le università sono memorizzate
con un nome e un codice interno al database.
Ogni articolo scientifico può avere più autori, ha un titolo, un abstract, e un
codice univoco DOI. Un articolo può contenere citazioni ad altri articoli, cosı̀
come può ricevere citazioni da altri articoli. Se un articolo è in database vuol
dire che è stato pubblicato in un certo volume di una rivista, in un determinato
anno. Un articolo non può essere pubblicato in più di una rivista. Ogni rivista
ha un codice univoco ISSN, un nome e un publisher. Ogni rivista ha inoltre un
comitato editoriale, che cambia di anno in anno, di cui possono far parte anche
autori registrati nel database.
Si disegni il modello concettuale del dominio descritto utilizzando i diagrammi E/R e si indichino gli eventuali vincoli non esprimibili.
4
4
Indici
Mostrare i passi dell’inserimento della chiave K=18 nel seguente B+Tree:
6
Traccia di soluzione dell’esame di Basi di dati del
17 Febbraio 2014
(1) Domande a risposta multipla
1-a; 2-b; 3-d; 4-c; 5-b; 6-b.
(2) Query
1. SELECT targa
FROM Multa
GROUP BY targa,codVia
HAVING COUNT(targa)>2
WHERE data >= ’2013-01-01’
oppure
SELECT targa
FROM Multa
GROUP BY targa,codVia
HAVING COUNT(codVia)>2
WHERE data >= ’2013-01-01’
2. SELECT Via.nome, COUNT(Multa.codVia)
FROM Via NATURAL JOIN ZonaTL NATURAL JOIN Multa
WHERE ZonaTL.oraFineDivieto <= 17
GROUP BY codVia
3. πcodV ia,nome,codZona (σmultaEuro>=50 (V ia ./ ZonaT L))−πcodV ia,nome,codZona (V ia ./
M ulta)
4. πoraF ineDivieto (zonaT L)−πoraF ineDivieto (σtarga=0 AB67554M 0 (M ulta ./ V ia ./
zonaT L))
7
(3) Progettazione
8
(4) Indici
9
Scarica

Esame di Basi di Dati - Dipartimento di Informatica