Facoltà di Ingegneria – Corso di Laurea in Ingegneria Gestionale Esame di Sistemi Informativi e Basi di Dati – 6 crediti 19 Aprile 2006 Esercizio 1: Progettazione di una base di dati (40 min) Si progetti una base di dati di supporto alla gestione delle operazioni di prelievo e di versamento su conto corrente per un circuito bancario. Lo studente produca un modello E/R e la corrispondente traduzione in un modello relazionale in accordo alle seguenti specifiche: Ogni istituto bancario è caratterizzato da un codice (identificativo) e dal nome, e può avere più sedi. Per ogni sede di banca occorre tenere traccia della città e dell’indirizzo in cui essa è ubicata. Non possono esistere due sedi di una stessa banca situate nello stesso indirizzo della stessa città. Ciascuna sede bancaria può ospitare più sportelli attraverso i quali i clienti possono eseguire operazioni sui propri conti correnti. Ciascuno sportello è caratterizzato da un numero progressivo. Si osservi che gli sportelli in una stessa sede devono essere associati a numeri progressivi diversi, e che sportelli presenti in sedi bancarie diverse possono avere numero progressivo uguale. I clienti del circuito possono effettuare operazioni sui propri conti correnti presso un qualunque sportello di qualunque banca. Ogni cliente (di cui occorre tenere traccia dei dati anagrafici) può essere titolare di più conti correnti. Ciascun conto corrente viene aperto presso una sede bancaria. Per ogni conto corrente si deve memorizzare la data di apertura e la tipologia (conto giovani, conto pensione, ecc.). Uno stesso cliente non può essere titolare di due conti correnti della stessa tipologia aperti presso la stessa sede bancaria. Le operazioni eseguite negli sportelli del circuito possono essere di due tipi: prelievo e versamento. I versamenti possono essere eseguiti presso tutti gli sportelli, mentre i prelievi possono essere eseguiti solo presso particolari sportelli (denominati sportelli abilitati). Per ogni operazione (sia essa un prelievo o un versamento) occorre tenere traccia dell’importo versato o prelevato, della data e dell’ora in cui è avvenuta, dello sportello e del conto corrente su cui è stata effettuata. Non è possibile effettuare più di una operazione sullo stesso conto corrente nella stessa data alla stessa ora. Esercizio 2: Progettazione logica e dipendenze funzionali (20 min) Si consideri il seguente schema di relazione: <R(A,B,C,D,E,F,G), F> dove F è il seguente insieme di dipendenze funzionali: ABG C D DB B F E → → → → → → → CD DEG A E F G B Definire: 1. una copertura minimale per F; 2. le chiavi di R; 3. una decomposizione in 3NF di R che sia senza perdita di informazione e senza perdita di dipendenze funzionali. Facoltà di Ingegneria – Corso di Laurea in Ingegneria Gestionale Esame di Sistemi Informativi e Basi di Dati – 6 crediti 19 Aprile 2006 Esercizio 3: Interrogazioni (70 min) Si consideri il seguente schema relazionale: Cliente (Codice_Fiscale, Nome, Città) ContoCorrente(Codice, Cliente, Data_Apertura) Operazione(ContoCorrente, Data, Ora, Tipo, Importo) Ciscuna tupla nella relazione Operazione rappresenta un’operazione effettuata sul conto corrente specificato dal titolare del conto stesso nella data e nell’ora indicate; l’attributo Tipo può assumere il valore “prelievo” o “versamento”, e l’attributo Importo indica la quantità di denaro prelevata o versata nell’operazione. Risolvere in SQL e, dove possibile, in Algebra Relazionale le seguenti query: 1. Restituire l’elenco dei nomi dei clienti che sono titolari di un conto corrente sul quale è stata effettuata una coppia di operazioni di tipo diverso e di importo superiore a 1000€. 2. Restituire l’elenco dei nomi dei clienti che hanno effettuato meno di 2 operazioni di tipo “versamento” nell’anno 2005. 3. Restituire l’elenco dei clienti che hanno effettuato almeno un’operazione di prelievo da ogni conto corrente di cui sono titolari. 4. Per ogni conto corrente dei clienti di Cosenza si restituisca il “saldo attuale” (NB: per “saldo attuale” si intende la somma di tutti gli importi versati meno la somma di tutti gli importi prelevati). 5. Restituire il titolare del conto corrente su cui è stato effettuato il maggior numero di operazioni di versamento. 6. Per ogni cliente titolare del numero massimo di conti correnti, restituire l’importo complessivo delle operazioni di versamento da lui effettuate (prendendo in considerazione tutti i suoi conti correnti). Facoltà di Ingegneria – Corso di Laurea in Ingegneria Gestionale Esame di Sistemi Informativi e Basi di Dati – 6 crediti 19 Aprile 2006 – 20 min Esercizio 4: Le seguenti affermazioni si riferiscono al modello relazionale. Indicare quali di esse sono vere e quali non lo sono (si inserisca un segno di spunta nella casella che si ritiene essere corretta). V F 1) Per ogni attributo di una relazione, esiste almeno una superchiave che lo contiene. 2) Se un attributo A di una relazione appartiene a tutte le possibili superchiavi della relazione stessa, allora A è una chiave della relazione. 3) Se una relazione ha una chiave composta da due attributi, allora tutte le superchiavi composte da più di due attributi non sono minimali. 4) Se una relazione ammette un’unica superchiave, allora questa comprende tutti gli attributi della relazione. 5) Se una relazione ammette almeno due superchiavi, allora ammette almeno due chiavi. 6) Se un attributo A di una relazione è superchiave per la relazione stessa, allora A è anche chiave 7) Se due superchiavi hanno un attributo in comune, allora almeno una di esse non è minimale Esercizio 5: Indicare quali delle seguenti affermazioni sono vere e quali sono false (si inserisca un segno di spunta nella casella che si ritiene essere corretta). V F Il potere espressivo dell’algebra relazionale differisce dal potere espressivo di SQL, in quanto l’algebra relazionale è un linguaggio procedurale mentre SQL è dichiarativo. Data una relazione r con cardinalità n, la relazione r’= r r, qualunque sia la F 2) condizione F, non può contenere più di n2 tuple. 1) 3) I vincoli di chiave e chiave esterna sono esprimibili mediante dipendenze funzionali. 4) Una dipendenza funzionale può essere espressa da un vincolo di chiave. 5) Si consideri lo schema relazionale R(A,B,C,D). Sia X un sottoinsieme non vuoto degli attributi di R. La dipendenza funzionale XABCD è vera solo se X è chiave per R. Il problema della chiusura transitiva non è esprimibile in algebra relazionale, ma è esprimibile in SQL con aggregati. Dato lo schema relazionale R(A, B) ed una sua istanza r con cardinalità n, la relazione 7) r’= r r contiene esattamente n(n-1) tuple. $1$1 6)