Compito di Complementi di Basi di dati
14 settembre 2010
Esercizio 1:
Si supponga che per memorizzare alcuni dati anagrafici relativi ad un insieme di persone di interesse sia stata usata un’unica tabella AN AGRAF E con la seguente struttura:
AN AGRAF E(CF P ersona, N ome, Cognome, V iaResidenza, N CivicoResidenza, CAP Residenza, CittaResidenza, DataN ascita, CittaN ascita)
Sia dato il seguente insieme di requisiti. Ogni persona sia identificata univocamente dal proprio codice fiscale. Ogni persona sia caratterizzata da un (unico) nome ed un (unico) cognome. Vi possano essere persone diverse con lo stesso nome e/o con lo stesso cognome. Ogni persona abbia un’unica residenza, un’unica citt`a di nascita e un’unica data di nascita. Persone diverse possano avere la medesima residenza.
Vi possano essere vie con lo stesso nome in citt`a diverse, ma non nella stessa citt`a. Ad ogni CAP corrisponda un’unica citt`a, ma non valga il viceversa: a (parti diverse di) una stessa citt`a possano essere associati CAP diversi.
(a) Determinare le dipendenze funzionali della relazione AN AGRAF E, indicando, per ciascuna di esse, il requisito codificato.
(b) Determinare le chiavi candidate e gli attributi primi e non primi di AN AGRAF E.
(c) Stabilire se AN AGRAF E `e o meno in 3NF.
(d) Stabilire se AN AGRAF E `e o meno in 2NF.
(e) Stabilire se AN AGRAF E `e o meno in BCNF.
(f) Nel caso in cui AN AGRAF E non sia in 3NF, fornire una scomposizione lossless join in 3NF di AN AGRAF E che conservi le dipendenze.
Esercizio 2:
Si considerino i seguenti schedule:
s1: r0(x), w0(x), r1(x), r2(y), w0(y), w1(x);
s2: r0(x), w1(x), r1(x), w0(x), w2(x), r2(x);
s3: r0(x), r0(y), w1(x), r0(v), r2(x), w1(y), w2(v), r3(y), w4(y), r3(v).
Stabilire se gli schedule dati sono o meno serializzabili rispetto alle viste, rispetto ai conflitti, rispetto al metodo del locking a due fasi, rispetto al metodo basato sui timestamp e rispetto al metodo del locking a due fasi stretto.
Esercizio 3:
Sia dato un file contenente r = 4000000 record, memorizzati su un disco con dimensione del blocco B = 4096 byte. I record abbiamo lunghezza fissa R = 400 byte e siano di tipo unspanned. La dimensione del campo chiave primaria sia V 1 = 15 byte; la dimensione del puntatore ad un blocco sia P = 5 byte.
i
(a) Si assuma che il file non sia ordinato rispetto ad alcun campo. Determinare il numero medio di accessi a blocco richiesto da una ricerca basata sulla chiave primaria.
(b) Si assuma che il file non sia ordinato rispetto ad alcun campo. Determinare il numero medio di accessi a blocco richiesto da una ricerca basata su una chiave candidata (diversa dalla chiave primaria) di dimensione V 2 = 10 byte.
(c) Si assuma che il file sia ordinato rispetto alla chiave primaria. Determinare il numero medio di accessi a blocco richiesto da una ricerca basata sulla chiave primaria.
(d) Si assuma che il file sia ordinato rispetto alla chiave primaria. Determinare il numero medio di accessi a blocco richiesto da una ricerca con indice primario.
(e) Si assuma che il file sia ordinato rispetto alla chiave primaria. Determinare il numero medio di accessi a blocco richiesto da una ricerca basata su una chiave candidata (diversa dalla chiave primaria) di dimensione V 2 = 10 byte.
(f) Si assuma che il file non sia ordinato rispetto ad alcun campo. Determinare il numero medio di accessi a blocco richiesto da una ricerca con indice secondario costruito sulla chiave primaria.
(g) Si assuma che il file non sia ordinato rispetto ad alcun campo. Determinare il numero medio di accessi a blocco richiesto da una ricerca con indice secondario costruito su una chiave candidata (diversa dalla chiave primaria) di dimensione V 2 = 10 byte.
(h) Si assuma che il file sia ordinato rispetto alla chiave primaria. Determinare il numero medio di accessi a blocco richiesto da una ricerca con indice secondario costruito su una chiave candidata (diversa dalla chiave primaria) di dimensione V 2 = 10 byte.
Esercizio 4:
Descrivere brevemente le caratteristiche fondamentali delle procedure di ripristino da guasto denominate rispettivamente ripresa a caldo e ripresa a freddo, spiegando gli utilizzi dell’una e dell’altra. Successiva- mente, descrivere l’esecuzione della procedura di ripresa a caldo, mostrando la costruzione passo passo degli insiemi UNDO e REDO e l’applicazione delle azioni di ripristino, a fronte del seguente input:
B(T1), I(T1, O1, A1), U (T1, O2, B2, A2), B(T2), D(T2, O2, B3), B(T3), I(T3, O3, A4), U (T2, O3, B5, A5), C(T3), B(T4), I(T2, O4, B6), D(T4, O1, B7), C(T1), CK(T2, T4), C(T2), B(T5), U (T4, O4, B8, A8), D(T5, O3, B9), B(T6), A(T5), U (T6, O2, B10, A10), C(T4), I(T6, O4, A11), guasto
Esercizio 5
(facoltativo)Si dimostri che i primi membri ‘singleton’ (vale a dire costituiti da un singolo attributo) sono insuffi- cienti per le dipendenze funzionali (suggerimento: fornire un insieme di dipendenze funzionali che non sia equivalente ad alcun insieme di dipendenze funzionali del tipo {B1 → C1, . . . , Bn → Cn}, dove Bi e Ci, per i = 1 . . . , n, sono singoli attributi).