Informazioni sul documento
- Università
- Politecnico di Milano
- Corso di laurea
- Computer Engineering
- Materia
- Basi di Dati
- Classificazione
- Esame · Primo parziale
- Contenuto
- Testo d’esame
- Formato originale
- Testo
- Testo ricercabile
Primo parziale di Basi di Dati per il corso di Computer Engineering presso Politecnico di Milano. Materiale proveniente dall’archivio storico Studwiz e classificato per la consultazione online.
Primo parziale di Basi di Dati per il corso di Computer Engineering presso Politecnico di Milano. Materiale proveniente dall’archivio storico Studwiz e classificato per la consultazione online.
Qualità dell’importazione: il testo è stato estratto direttamente dal documento originale.
Passaggi rappresentativi riconosciuti nelle diverse parti del materiale. Il testo completo resta presente nella pagina per la ricerca, mentre l’anteprima compatta rende più semplice la lettura.
SOLUZIONE DELLA PROVA IN ITINERE DEL 26 NOVEMBRE 2015 Si consideri lo schema della base di dati relazionale di un’associazione di subacquea che vuole tenere traccia dei brevetti conseguiti e delle immersioni effettuate dai sub iscritti. SUB (CF, nome, cognome, città, telefono) BREVETTO (codice, nome, descrizione, profonditàMassima) CONSEGUIMENTO (sub, brevetto, dataConseguimento) IMMERSIONE (sub, numero, subCompagno, data, luogo, oraInizio, oraFine, pressioneInizio, pressioneFine, profMaxRaggiunta, temperatura, visibilità) Si noti che uno stesso sub può avere conseguito più brevetti. 1. Linguaggi Formali (6 punti) Esprimere in algebra relazionale (ottimizzata), calcolo relazionale e Datalog la seguente interrogazione: Sub che non hanno mai conseguito brevetti per profondità superiori a 30 metri e che hanno fatto almeno due immersioni con lo stesso compagno e un’immersione a Portoferraio con un compagno differente. Algebra relazionale Calcolo relazionale {t| ∃tI1∈IMMERSIONE, ∃tI2∈IMMERSIONE, ∃tI3∈IMMERSIONE ( t[CF]=tI1[sub]∧tI1[sub]=tI2[sub]∧tI2[sub]=tI3[sub]∧tI1[subCompagno]=tI2[subCompagno]∧ tI1[numero]<>tI2[numero] ∧tI3[luogo]=’Portoferraio’ ∧ tI3[subCompagno]<>tI1[subCompagno] ∧¬ ( ∃tB∈BREVETTO, ∃tC∈CONSEGUIMENTO ( tB[Codice]=tC[brevetto] ∧ tB[profonditàMassima]>30 ∧ tC[sub]=tI1[sub] ) ) ) } Datalog 30METRI (SUB) :- BREVETTO(C,_,_,P), CONSEGUIMENTO(SUB,C,_), P>30. RIS(CF) :- IMMERSIONE(CF,N1,SC1,_,_,_,_,_,_,_,_,_), IMMERSIONE(CF,N2,SC1,_,_,_,_,_,_,_,_,_), N1<>N2, IMMERSIONE(CF,_,SC2,_,’Portoferraio’,_,_,_,_,_,_,_), SC1<>SC2, ¬30METRI(CF). ?-RIS(x) 2. SQL (7 punti) a) Per ogni sub, il numero di immersioni che ha fatto nel 2014 con un compagno della sua stessa città (2 punti). SELECT S1.CF, COUNT(*) FROM Immersione I, Sub S1, Sub S2 WHERE S1.CF = I.sub AND S2.CF =…
Prima pagina del documento.