• Non ci sono risultati.

Esame di Basi di Dati

N/A
N/A
Protected

Academic year: 2021

Condividi "Esame di Basi di Dati"

Copied!
10
0
0

Testo completo

(1)

Esame di Basi di Dati

10 Settembre 2014

Matricola CFU (9/12/9+9) Progetto (S`ı/No)

Cognome Nome

Istruzioni

• I voti verranno resi disponibili su AlmaEsami. Chi vorr` a rifiutare il voto dovr` a comunicarlo tassativamente 5 giorni dalla data della pubblica- zione all’indirizzo montesi@cs.unibo.it, 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 provve- der` a a registrarli successivamente — il momento preciso in cui avverr` a la registrazione non ` e definito a priori, e pu` o variare da appello ad appello, l’unico termine fisso ` e quello dei 5 giorni per rifiutare il voto. Quanto detto vale per i voti maggiori o uguali a 18.

• 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 ` e svolto il progetto.

• Scrivere le soluzioni direttamente su questi fogli, e utilizzare i fogli pro- tocollo solo per la brutta: i fogli protocollo verranno ritirati, ma non verranno corretti. Si pu` o usare il verso se necessario. Non ` e gradito l’uso delle matite: si deve utilizzare una penna.

• Non si possono utilizzare libri o appunti, n´ e tenere telefoni cellulari o altri dispositivi di comunicazione, neanche se spenti. Il tempo a disposizione ` e di due ore.

• Si consiglia di non dare soltanto le soluzioni, ma anche i ragionamenti che hanno portato alla soluzione. Questo ci permetter` a di valutare anche risposte parziali o parzialmente false.

Firma per la presa visione delle istruzioni:

1

(2)

1 Domande a risposta multipla

1. Quale di queste non ` e un’attivit` a della ristrutturazione nella progettazione logica:

(a) Scelta degli identificatori primari.

(b) Costruzione del glossario.

(c) Eliminazione delle generalizzazioni.

(d) Analisi delle ridondanze.

2. In algebra relazionale, il join naturale su relazioni senza attributi in co- mune:

(a) ` e un join vuoto.

(b) ` e un join incompleto.

(c) estende, con valori nulli, le ennuple che verrebbero tagliate fuori.

(d) diventa un prodotto cartesiano.

3. Quale dei seguenti non ` e un vincolo intrarelazionale in SQL:

(a) NOT NULL.

(b) UNIQUE.

(c) FOREIGN KEY.

(d) PRIMARY KEY.

4. Quale delle seguenti affermazioni ` e vera?

(a) L’algebra relazionale e il calcolo relazionale sono entrambi linguaggi dichiarativi.

(b) L’algebra relazionale e il calcolo relazionale sono entrambi linguaggi procedurali.

(c) L’algebra relazionale ` e dichiarativa, il calcolo relazionale ` e procedu- rale.

(d) L’algebra relazionale ` e procedurale, il calcolo relazionale ` e dichiara- tivo.

5. In una tabella che rappresenta una relazione:

(a) l’ordinamento tra le righe ` e irrilevante.

(b) l’ordinamento tra le colonne ` e irrilevante.

(c) Entrambe le precedenti.

(d) Nessuna delle precedenti.

6. Nel modello relazionale il valore nullo:

(3)

2 Query

Si considerino le seguenti tabelle:

Ingrediente

id nome tipo

111 melanzana ortaggio 222 grana padano formaggio

333 fusilli pasta

444 salsa di soia salsa 555 spaghetti pasta

Composizione

id ricetta id ingrediente

1111 111

1111 333

2222 111

2222 222

2222 444

Ricetta

id nome cucina difficolt` a

1111 Pasta del contadino Mediterranea 4 2222 Spaghetti all’amatriciana Mediterranea 3 3333 Riso alla cantonese Asiatica 5

(Importante: il contenuto delle tabelle ` e solamente un esempio; non pos- sono trarsi conclusioni sull’assenza o la completezza dei dati.)

1. Scrivere in SQL una query che restituisce i tipi di cucina (es. Mediterranea, Asiatica, . . . ) che hanno pi` u di 20 ricette contenenti aglio, ordinate in modo decrescente su questa quantit` a.

2. Scrivere in SQL una query che restituisce le ricette che contengono tra gli ingredienti almeno uno di tipo ‘pasta’ ed almeno uno di tipo ‘formaggio’

(devono contenere entrambi i tipi di ingrediente).

3. Scrivere in algebra relazionale una query che restituisce i tipi di ingredienti che non compaiono in nessuna delle ricette di cucina asiatica.

4. Scrivere in algebra relazionale una query che restituisce la cucina delle ricette, con difficolt` a superiore a 4, che non contengono nessun ingrediente di tipo pasta.

3

(4)
(5)

3 Progettazione

Si vuole progettare una base di dati per un sito di aste online per la compra- vendita di automobili. L’utente che si registra con i propri dati anagrafici pu` o partecipare alle aste per aggiudicarsi un automobile. Per vendere la proprio au- to e quindi creare un’asta ` e necessario anche verificare l’account con il proprio numero di telefono e registrare il proprio codice fiscale. Chi crea un’asta non pu` o partecipare all’asta che ha creato. Le aste hanno un prezzo di partenza scelto dal venditore, una durata in giorni, una descrizione testuale dell’auto, un titolo e il modello dell’auto, identificato univocamente con la marca, il nome del modello e l’anno. Per correttezza, all’utente che visualizza un’auto all’asta, viene mostrata anche la valutazione standard per quello specifico modello. Le valutazioni non sono inserite dagli utenti ma aggiornate dai gestori del sito.

E’ anche possibile visualizzare lo storico delle offerte per le aste in corso, che include anche la data e l’ora di evasione delle offerte. Quando l’asta termina l’ultimo offerente si aggiudica l’automobile al prezzo di chiusura, ed ogni utente pu` o successivamente visualizzare le aste vinte in passato. Per ogni asta chiusa, l’aggiudicatario e il venditore possono lasciare un feedback relativo alla stessa.

Si disegni il modello concettuale del dominio descritto utilizzando i diagram- mi E/R e si indichino gli eventuali vincoli non esprimibili.

5

(6)
(7)

4 Transazioni

Descrivere brevemente il modello ACID e le sue propriet` a.

7

(8)
(9)

Traccia di soluzione dell’esame di Basi di dati del 10 Settembre 2014

(1) Domande a risposta multipla

1-B; 2-D; 3-C; 4-D; 5-C; 6-A.

(2) Query

1. SELECT Ricetta.cucina, count(Ricetta.id) FROM

Ricetta JOIN Composizione on Ricetta.id = Composizione.id_ricetta JOIN Ingrediente on Ingrediente.id = Composizione.id_ingrediente WHERE Ingrediente.nome = "aglio"

GROUP BY Ricetta.cucina HAVING count(Ricetta.id) > 20 ORDER BY count(Ricetta.id) DESC 2. SELECT C1.id_ricetta FROM

(Composizione as C1 JOIN Ingrediente as I1 on C1.id_ingrediente = I1.id) INNER JOIN

(Composizione as C2 JOIN Ingrediente as I2 on C2.id_ingrediente = I2.id) on C1.id_ricetta = C2.id_ricetta

WHERE I1.tipo = ‘formaggio’ AND I2.tipo = "pasta"

3. π tipo Ingrediente−π tipo (σ cucina=

0

Asiatica

0

Ricetta ./ Ricetta.id=Composizione.id ricetta

Composizione ./ Composizione.id ingrediente=Ingrediente.id Ingrediente)

4. π cucina σ dif f icolta>4 Ricetta−π cucina (σ dif f icolta>4 Ricetta ./ Ricetta.id=Composizione.id ricetta

Composizione ./ Composizione.id ingrediente=Ingrediente.id σ tipo=

0

pasta

0

Ingrediente)

9

(10)

(3) Progettazione

Vincoli non esprimibili:

1. Non ` e possibile fare un’offerta su un’asta scaduta.

2. L’utente che si aggiudica l’asta ` e l’ultimo utente ad aver eseguito un’offer- ta.

3. Il prezzo dell’aggiudicazione ` e il prezzo dell’ultima offerta.

4. Gli attributi feedback, sia per l’acquisto che per la vendita, possono essere popolati solo successivamente alla chiusura della relativa asta.

(4) Transazioni

ACID, modello per transazioni:

1. Atomicity (indivisibilita’ delle transazione);

Riferimenti

Documenti correlati

(c) Trovare i codici e i nomi dei dipendenti abilitati al volo su almeno due aerei in grado di coprire distanze superiori a 5000 Km e che siano abilitati al volo su qualche

Come confrontare tuple di una stessa tabella? Generazione di una o più copie della tabella e join. un esempio: come determinare il valore massimo o minimo associato ad dato

Padre Figlio Adamo Caino Adamo Abele Abramo Isacco Abramo

Genitore Figlio Luca Anna Maria Anna Giorgio Luca Silvia Maria Enzo Maria. Genitori Per trovare nonni

l’attributo MatrDocente nella relazione Corsi fa riferimento a Matricola nella relazione Docenti I valori assunti da un attributo nella relazione referenziante devono

Scrivere in algebra relazionale una query che restituisce le valutazioni delle berline prodotte dalle case francesi che non hanno valutazione per l’anno 2007.. Scrivere in

Scrivere in algebra relazionale una query che restituisce i cognomi dei soci che hanno piu’ di 10 euro di credito, che non hanno preso in prestito un dvd in data

Scrivere in algebra relazionale una query che restituisce l’elenco degli im- piegati con codImpiegato, nome e cognome, che a tutti i progetti cui collaborano, vi collaborano per piu’