PROVA SCRITTA 12 Settembre 2007
COGNOME
NOME
MATRICOLA
Esercizio di sbarramento
Rispondere ai seguenti test. Per ogni test, solo una soluzione e’ corretta L’esercizio si ritiene superato se si
risponde correttamente ad almeno 7 domande, di cui almeno una domanda per ogni gruppo di test.
GRUPPO 1: domande generali
Domanda 1
Sia V una vista in una base di dati DB.
Quale tra le seguenti affermazioni e’ corretta:
a) V contribuisce a definire lo schema di DB
b) V contribuisce a definire l’istanza di DB
c) V contribuisce a definire sia l’istanza che lo schema di DB
Domanda 2
Una chiave esterna:
a) Deve contenere lo stesso numero e tipo di attributi della chiave primaria della relazione riferita
b) Deve contenere lo stesso numero e tipo di attributi di una tra le chiavi alternative della relazione riferita
c) Deve contenere lo stesso numero e tipo di attributi di una tra le chiavi candidate della relazione riferita
d) Nessuna delle precedenti
Domanda 3
Durante la fase di progettazione, avete rilevato un vincolo di integrita` rappresentabile in SQL come asserzione
ma il DBMS che intendete utilizzare non supporta questo concetto. Cosa fare per implementare comunque il
vincolo, utilizzando soltanto i concetti visti nel corso di Basi di Dati:
a) Utilizzate un CONSTRAINT
b) Utilizzate una particolare funzione o procedura
c) Verificate il vincolo in ogni funzione/procedura che modifica la base di dati e che potrebbe modificare
il vincolo stesso
d) Nessuna delle precedenti
GRUPPO 2: linguaggi relazionali
Si consideri il seguente schema relazionale:
CD(Titolo, Anno, NumCanzoni)
CANTANTE(CodA, Nome, Cognome, DataNascita)
CANZONE(Titolo, CodACantante Durata, Testo)
APPARE_IN(TitoloCanzone, CodACanzone , TitoloCDCD, AnnoCD)
Domanda 1
Si supponga di volere determinare i titoli delle canzoni che non sono mai comparse in un CD e si consideri la
seguente espressione incompleta:
R- S
Indicare quali tra le seguenti espressioni devono essere inserite nella precente espressione incompleta per ottenere
il risultato:
a)
R =  Titolo(CANZONE)
S =  Titolo (APPARE_IN)
b)
R =  Titolo,CodA(CANZONE)
S =  Titolo,CodA (APPARE_IN)
c)
R = CANZONE
S =  Titolo,CodA (APPARE_IN)
d) Nessuna delle precedenti
Domanda 2
Si supponga di volere determinare il CD contenente il maggior numero di canzoni. . Questa espressione:
a) Puo’ essere espressa in algebra relazionale
b) Non puo’ essere espressa in algebra relazionale ma puo’ essere espressa in calcolo relazionale
c)
Non puo’ essere espressa ne’ in algebra ne’ in calcolo relazionale
Domanda 3
Si consideri la seguente espressione del calcolo relazionale:
{t: {CodA} |  c1( s1( s2 ( c1  CANTANTE  s1  CANZONE  s2  CANZONE  s1.CodA = c.CodA 
s2.CodA = c.CodA))) }
La precedente espressione permette di determinare:
a)
I cantanti che cantano almeno due canzoni presenti nel database
b) I cantanti che cantano almeno due canzoni presenti nel database
c)
Nulla, perche` sintatticamente errata
d) Nulla, perche` restituisce sempre l’insieme vuoto
GRUPPO 3: SQL
Si consideri nuovamente lo schema relazionale proposto per il Gruppo 2 di test.
CD(Titolo, Anno, NumCanzoni)
CANTANTE(CodA, Nome, Cognome, DataNascita)
CANZONE(Titolo, CodACantante Durata, Testo)
APPARE_IN(TitoloCanzone, CodACanzone , TitoloCDCD, AnnoCD)
Domanda 1
Si consideri il seguente comando SQL:
DELETE FROM CD C
WHERE NumCanzoni <> (SELECT COUNT(*)
FROM APPARE_IN
WHERE C. Titolo = TitoloCD AND C.Anno = Anno)
Indicare quali CD vengono cancellati eseguendo il comando precedente:
___________________________________________________________________________________________
___________________________________________________________________________________________
___________________________________________________________________________________________
___________________________________________________________________________________________
Domanda 2
Si consideri il seguente comando SQL:
SELECT Titolo
FROM CD C
WHERE NumCanzoni <= (SELECT COUNT(*)
FROM APPARE_IN
WHERE C.Anno = Anno
GROUP BY TitoloCD, Anno)
Questa interrogazione e` sintatticamente errata. Perche`?
a) La clausola WHERE della sottoquery e’ sintatticamente errata
b) L’operatore di confronto utilizzato nella clausola WHERE della query principale e’ sintatticamente
errato
c)
Il raggruppamento nella sottoquery e` sintatticamente errato
d) Nessuna delle precedenti
Domanda 3
Si consideri la seguente asserzione SQL:
CREATE ASSERTION ControllaNumCanzoni
CHECK NOT EXISTS ( SELECT * FROM CANZONE
WHERE (Titolo,CodA) NOT IN ( SELECT Titolo, CodA
FROM APPARE_IN ) )
Tale vincolo impedisce alla base di dati di contenere:
a) Canzoni che non compaiono in alcun CD
b) Canzoni che compaiono in almeno un CD
c) CD che non contengono canzoni
d) Nessuna delle precedenti
GRUPPO 4: comprensione di schemi ER e progettazione
Si risponda alle seguenti domande relative al seguente schema ER:
Domanda 1
Indicare quale tra questi requisiti descrive nel modo piu’ preciso la relazione IN:
a) Ogni Università` e’ associata ad un numero arbitrario di Dipartimenti. Ogni Dipartimento e` associato
esattamente ad una Universita`
b) Ogni Università` e’ associata ad almeno un Dipartimento. Ogni Dipartimento e` associato ad almeno una
Università
c) Ogni Università` e’ associata ad un numero arbitrario di Dipartimenti. Ogni Dipartimento e` associato ad
almeno una Università
d) Ogni Università` e’ associata ad almeno un Dipartimento. Ogni Dipartimento e` associato ad esattamente una
Università
Domanda 2
La risposta a questa domanda si considera corretta se si risponde correttamente ad almeno 3 affermazioni:
vero
Falso
Dipartimenti diversi possono avere lo stesso nome
X
Dipartimenti con lo stesso nome possono appartenere alla stessa
X
Università`
Ci possono essere Dipartimenti per cui l‘Universita` di appartenenza
X
non e` nota
Dipartimenti con lo stesso nome devono avere lo stesso indirizzo
X
Ci possono essere Universita` per cui i Dipartimenti non sono noti
X
Domanda 3
Quale tra i seguenti schemi relazionali corrispondono allo schema presentato sopra?
a)
UNIVERSITA (Nome)
DIPARTIMENTO(Nome, Indirizzo, NumDoc)
IN(NomeUniversitaUniversita,NomeDipartimentoDipartimento)
b) UNIVERSITA (Nome)
DIPARTIMENTO(Nome, Indirizzo, NumDoc)
IN(NomeUniversitaUniversita,NomeDipartimentoDipartimento)
c)
UNIVERSITA (Nome)
DIPARTIMENTO(Nome,NomeUniversitaUniversita, Indirizzo, NumDoc)
d) UNIVERSITA (Nome)
DIPARTIMENTO(Nome,NomeUniversitaUniversita, Indirizzo, NumDoc)