You are on page 1of 1

Basi di Dati 2 Prof.

Stefano Paraboschi 13 Febbraio 2008 Tempo: 2h


A. Basi di dati Attive. (7 punti) Si consideri la base di dati seguente: OSPEDALE( Nome, Citt, Regione, N-Posti, Primario ) MEDICO( Matricola, Nome, Ospedale, Specialit ) PAZIENTE( NumTessera, DataN, LuogoN, Residenza, Medico-Curante ) ANALISI( NumTess-Paz, Data, Tipo, Risultato, Ospedale ) RICOVERO( NumTess-Paz, Ospedale, Data-In, Data-Out, Problema) Scrivere un insieme di regole attive che avvertono il medico curante di un qualunque paziente non appena questi viene accettato in un ospedale, oppure ne viene dimesso, oppure infine divengono noti i risultati di una analisi. Si usi un servizio SendMail() che accetti come parametri gli opportuni valori per effettuare la comunicazione.

B. Basi di Dati Distribuite. (6 punti) Si ha una base di dati relazionale per un'universit, con le seguenti tabelle: STUDENTE( Matr, Nome, Sede ) CORSO( CodCorso, Titolo, Docente, Sede ) ISCRIZIONE( Matr, CodCorso, Anno ) L'universit ha 3 sedi diverse (Sede1, Sede2 e Sede3), ciascuna con un proprio database; esiste poi un centro elaborazione dati di ateneo, collegato con tutte le sedi. La topologia della rete a stella, con il centro elaborazione dati al centro. Progettare una frammentazione dei dati che non presenti ridondanza e mantenga i dati vicino agli utenti dei dati stessi, tenendo conto che nella grande maggioranza dei casi gli studenti sono iscritti a corsi della propria sede; in alcuni rari casi, gli studenti possono inserire nel proprio piano degli studi corsi di sedi diverse dalla propria. Mostrare poi ai livelli di trasparenza di frammentazione e di linguaggio la gestione di due comandi: (1) il trasferimento dello studente "Mario Rossi'' (matr. 623372) da Sede1 a Sede2; (2) la stampa dell'elenco degli iscritti al corso di "Basi di dati 2'' offerto presso Sede1.

C. XML e OQL. (11 punti)

Il seguente DTD relativo a varie esibizioni circensi:


<!ATTLIST Artista Id ID #REQUIRED> <!ELEMENT Clan (NomeClan, RefArtista+ )> <!ELEMENT RefArtista (EMPTY )> <!ATTLIST RefArtista ref IDREF #REQUIRED>

<!ELEMENT Spettacoli (Artista+, Clan+, Esibizione)> <!ELEMENT Esibizione (Nome, Numero+, NumeroArtistiCoinvolti)> <!ELEMENT Numero (Nome, Tipologia, RefArtista+)> <!ELEMENT Artista (NomeD'Arte, NomeVero, CognomeVero)>

Gli elementi non ulteriormente specificati contengono solo PCDATA. I nomi dei numeri sono identificatori univoci, come anche i nomi delle esibizioni che li raccolgono. 1) 2) 3) 4) Estrarre in XQuery le esibizioni in cui c almeno un numero che coinvolge tutti gli artisti dellesibizione. (2 p) Estrarre in XQuery tutti i numeri che si ripetono in almeno 10 esibizioni. (2 p) Estrarre in XQuery i numeri eseguiti da soli membri del clan "MacLeod" (2 p) Definire uno schema a oggetti per rappresentare gli stessi dati ed esprimere le prime due interrogazioni in OQL. (5p)

D. Controllo di Concorrenza. (5 punti) Si hanno 2 transazioni T1 e T2 che eseguono entrambe la coppia di operazioni r(x) w(x). Lesecuzione delle 2 transazioni in modo concorrente pu dare luogo a 6 diversi schedule. Classificare ciascuno degli schedule rispetto allappartenenza alle classi CSR, TS-multi e 2PL-strict.

E. Prevenzione del deadlock. (3 punti) Illustrare brevemente le tecniche di prevenzione del deadlock "wait-die'' e "wound-wait''. Confrontare poi il loro comportamento in un contesto in cui la precedenza data alle transazioni pi vecchie (il timestamp viene conservato quando la transazione viene riavviata). Si illustri infine il vantaggio principale di ciascuna delle due alternative.

You might also like