Corsi -> Basi di Dati e Sistemi Informativi I (Canale1) ->  Tracce di esame sessione estiva 2001
 
 



11-06-2001
 

1) Dato il seguente schema di base di dati:

STUDENTE(Matr,Nome,Cognome,Indirizzo,Tel)
ESAME(Matr,C#,Data,Voto)
PROPEDEUTICITA(Prec,Succ)

NOTE:
- C# è il codice di un corso;
- PROPEDEUTICITA.Prec e PROPEDEUTICITA.Succ sono codici di corsi;
- Il formato della data è quello standard, es. 11-JUN-01;

1a) Trovare il numero degli studenti che nel 2001 non hanno sostenuto esami.
1b) Trovare i cognomi degli studenti che per qualche corso hanno riportato un voto inferiore a quello riportato per qualche corso ad esso propedeutico .
________________________________________________________________________________

2) Dato il seguente schema di relazione
R = (A, B, C, D, E, H)
 e il seguente insieme di dipendenze funzionali
 F = { ABÆ CD, CÆ E, ABÆE, ABCÆ D }

2a) Verificare che ABH è una chiave per R.
2b) Sapendo che ABH è líunica chiave per R, verificare che R non è in 3NF.
2c) Trovare una copertura minimale G di F.
2d) Trovare una decomposizione r di R tale che preserva G e ogni schema in r è in 3NF
2e) Trovare una decomposizione s  di R tale che preserva G, ha un join senza perdita e ogni schema in s è in 3NF.
________________________________________________________________________________

3) Supponiamo di avere un file di 200.000 record. Ogni record occupa 150 byte, di cui 40 per il campo chiave. Ogni blocco contiene 512 byte. Un puntatore a blocco occupa 4 byte. Usiamo un indice ISAM sparso, e assumiamo che i record non siano puntati e che il fattore di utilizzo sia dei blocchi del file dati sia dei blocchi dellíindice sia 0,8 (cioè i blocchi non sono completamente pieni, ma pieni allí 80%).
3a) Quanti blocchi dobbiamo utilizzare per il file dati (file principale)?
3b) Quanti blocchi dobbiamo usare per líindice ?
3c) Calcolare il numero massimo di accessi per la ricerca di un record nel file principale, utilizzando la ricerca binaria sul file indice.

SOLUZIONI (in formato pdf)





25-06-2001
 

1) Dato il seguente schema di base di dati:

CLIENTE(C#,Nome,Indirizzo)
ARTICOLO(A#,Descrizione,Prezzounitario)
ORDINE(O#,C#,A#,Quantita,Data)
RICAMBI(A#,P#)

NOTE:
- C# è il codice di un cliente;
- A# è il codice di un articolo;
- O# è il codice di un ordine;
- Per ogni ordine abbiamo una tupla per ogni articolo ordinato da un certo cliente in una certa data;
- P# è il codice di un articolo che è pezzo di ricambio per un altro articolo A# (e solo per quello);

1a)  Trovare nome e indirizzo dei clienti che in un loro ordine hanno incluso 100 pezzi di uno stesso articolo o un articolo con prezzo superiore a 1.000.000.
1b)  Trovare per ciascun pezzo di ricambio il codice dell'articolo che ha quel pezzo di ricambio e la quantità complessiva in cui è stato ordinato (includere nel risultato sia il codice del pezzo che dell'articolo).
1c)  Trovare l'importo complessivo di ciascun ordine (includere nel risultato il codice dell'ordine).
_______________________________________________________________________________
2a) Dato il seguente schema di relazione
R = (A, B, C, D, E, G, H)
 e il seguente insieme di dipendenze funzionali
 F = { ABÆ CD, EHÆ D, DÆ H }
determinare una chiave di R, e, sapendo che la chiave è unica, verificare che R non è in 3NF.

2b) Dato il seguente schema di relazione
R = (A, B, C, D, E)
 e il seguente insieme di dipendenze funzionali
 F = { CÆ D, ABÆ E, DÆ B }
 dire se la decomposizione
 r = { AC,ADE,CDE,AD, B }
 ha un join senza perdita e descrivere come si è arrivati alla risposta.

2c) Dato il seguente schema di relazione
R = (A, B, C, D)
 e il seguente insieme di dipendenze funzionali
 F = { ABÆ C, DÆ C, DÆ B, CÆ B, DÆ A }
 dire se la decomposizione
 r = { ABC,ABD }
 preserva le dipendenze  in F e descrivere come si è arrivati alla risposta.
________________________________________________________________________________

3) Supponiamo di avere un file di 780.000 record. Ogni record occupa 250. Ogni blocco contiene 1024 byte. Un puntatore a blocco occupa 4 byte. Usiamo una organizzazione hash con 2500 bucket.

3a) Quanti blocchi dobbiamo utilizzare complessivamente per la bucket directory e per i bucket, assumendo una distribuzione uniforme dei record nei bucket ?
3b) Quanti blocchi dobbiamo utilizzare complessivamente per i bucket, assumendo che il 30% dei record sia distribuito in modo uniforme su 1000 bucket, e che il restante 70% dei record sia distribuito in modo uniforme sui 1500 bucket rimanenti ?

SOLUZIONI (in formato pdf)





06-07-2001

1) Dato il seguente schema di base di dati:

IMPIEGATO(Matr, Nome, Cognome, Indirizzo)
QUALIFICA(Matr, Qualifica, Mese, Anno)
STIPENDIO(Qualifica, Stipendio-base)
STRAORDINARIO(Matr, N-ore, Mese, Anno)
RETRIB-STRAORD(Qualifica, Retr-Oraria)

NOTE:
- Matr è la matricola di un impiegato;
- Qualifica è una stringa che descrive la qualifica (non è un numero);
- Stipendio-base è lo stipendio base mensile (senza straordinari);
- La qualifica di un impiegato non varia all'interno dello stesso mese;
- Nella tabella QUALIFICA, per ogni impiegato, c'e' un record per ogni mese;
- La retribuzione straordinaria viene calcolata su base mensile.

1a)  Trovare nome e cognome degli impiegati che a maggio del 2001 hanno percepito lo stipendio base più alto.
1b)  Trovare per ogni impiegato nome, cognome e la somma totale percepita nel mese di giugno 2001.
_______________________________________________________________________________
2a) Dato il seguente schema di relazione
R = (A, B, C, D, E, G, H)
 e il seguente insieme di dipendenze funzionali
 F = { ABÆ D, GÆ A, GÆ B, HÆ E, HÆ G, DÆ H }
determinare le 4 chiavi di R.

2b) Dato il seguente insieme di dipendenze funzionali
 F = { BCÆ DE, CÆ D, BÆD, EÆ L, DÆ A, BCÆ AL }
 trovare una copertura minimale di F.

2c) Dato il seguente schema di relazione
R = (A, B, C, D, E, G)
 e il seguente insieme di dipendenze funzionali
 F = { ABÆ C, DGÆ B, GÆ D, EÆ G }
 dire se la decomposizione
 r = { ABD, AEG,BCE }
 ha un join senza perdita e descrivere come si è arrivati alla risposta.
_______________________________________________________________________________
3) Supponiamo di avere un file di 700.000 record. Ogni record occupa 280 byte, di cui 45 per il campo chiave. Ogni blocco contiene 2048 byte. Un puntatore a blocco occupa 4 byte. Usiamo una organizzazione B-tree. Quanti blocchi al massimo dobbiamo utilizzare complessivamente per il file indice (totale dei blocchi di tutti i livelli) e per il file principale (livello foglia)?