Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ive
re
In
ge
gn
er ia
V
ive
re
In
ge
gn
er ia
Esame di Basi di Dati
SOLUZIONE APPELLO 14/06/2011
1. Si effettui la progettazione concettuale della base di dati secondo la specifica che segue
fornendo un diagramma ER. Si vuole realizzare una base di dati che gestisca procedimenti
ia
sanzionatori nel contesto di rilevazioni statistiche ufficiali di carattere nazionale. Per alcune
rilevazioni statistiche ufficiali esiste, infatti, l’obbligo di risposta da parte dei soggetti contattati per la
er
conduzione delle rilevazioni. Qualora il soggetto contattato non risponda al questionario inviatogli,
dopo un prefissato intervallo di tempo, ha inizio un procedimento sanzionatorio che consta di due fasi
principali: invio della diffida al soggetto non rispondente e, qualora tale soggetto continui ad essere
gn
inadempiente (cioè non risponda al questionario), invio della sanzione che il soggetto stesso dovrà
pagare. I soggetti possono essere persone fisiche o imprese. Delle persone fisiche interessa
memorizzare il codice fiscale, delle imprese il codice fiscale o la partita iva in maniera alternativa.
Inoltre è di interesse l’indirizzo cui il soggetto è contattabile. Si noti che le imprese possono prevedere
ge
delle unità locali, ovvero l’impresa si articola secondo una struttura che consiste di un’impresa centrale
ed eventualmente di un insieme di imprese “periferiche”. Un procedimento viene avviato in relazione
alla non-risposta ad una specifica edizione di un’indagine. Ogni indagine è caratterizzata da un nome
In
(es. Forze di lavoro), da una frequenza con cui le sue edizioni occorrono (es. trimestrale) e dalle
specifiche edizioni che sono occorse ( es. primo trimestre 2011). Le edizioni, che hanno un codice
univoco nell’ambito dell’indagine in cui sono svolte, hanno una data di inizio ed una data di fine che
caratterizzano l’inizio e la fine della rilevazione sul campo dei dati oggetto dell’indagine. Nell’ambito
di un procedimento è prodotto un insieme di documenti che costituisce il fascicolo del procedimento.
re
Un fascicolo ha un codice che lo identifica nell’ambito del procedimento a cui è legato. I documenti,
che dispongono di un ID univoco nell’ambito del fascicolo in cui sono redatti, sono rappresentati da un
nome, un tipo, una data di produzione e dal path relativo al file cui sono associati. Del procedimento,
ive
oltre alle informazioni necessarie a desumere il suo avanzamento, interessa memorizzare la data di
inizio e, qualora sia stato archiviato, l’esito della archiviazione (ad esempio archiviato perché il
soggetto ha risposto) e la data di archiviazione.
V
1.1
V SCHEMA E-R
ive
re
In
ge
gn
er ia
2. Si effettui la prog. logica del diagramma ER realizzato con riferimento alla domanda 1. Si
motivino le scelte di progetto effettuate.
er ia
gn
ge
In
re
ive
V
2.2 SCHEMA RELAZIONALE
Procedimento(Codice,Soggetto,Edizione,Indagine,DataInizio)
foreign key : Procedimento(Soggetto) ⊆ Soggetto(Codice)
foreign key : Procedimento(Edizione,Indagine) ⊆ Edizione(Codice,Indagine)
inclusione : Procedimento(Codice) ⊆ Fascicolo(Procedimento)
ia
ProcedimentoNonArchiviato(Codice,Stato)
foreign key : ProcedimentoNonArchiviato (Codice) ⊆ Procedimento(Codice)
ProcedimentoArchiviato(Codice,Esito,DataArchiviazione)
er
foreign key : ProcedimentoArchiviato(Codice) ⊆ Procedimento(Codice)
Indagine(Codice,Nome,Frequenza)
gn
inclusione : Indagine(Codice) ⊆ Edizione(Indagine)
Edizione(Codice,Indagine,DataInizio,DataFine)
foreign key : Edizione(Indagine) ⊆ Indagine(Codice)
ge
Fascicolo(Codice,Procedimento)
inclusione : Fascicolo(Codice) ⊆ Documento(Fascicolo)
foreign key : Fascicolo(Procedimento) ⊆ Procedimento(Codice)
In
chiave : Procedimento
Documento(ID,Fascicolo,Data,Path,Nome,Formato)
foreign key : Documento(Fascicolo) ⊆ Fascicolo(Codice)
Soggetto(Codice,Indirizzo)
re
ia
• Soggetto [Codice] ⊆ Persona [Codice] ∪ Impresa [Codice]
er
Rimangono ovviamente validi i vincoli esterni espressi in fase di Progettazione Concettuale.
gn
Delegato(IdDelegato, Nome, Cognome, Organizzazione)
Partecipa(IdDelegato, IdMeeting)
ge
Meeting(IdMeeting, Citta, Nazione, DataInizio, DataFine)
3.1 – Scrivere un’interrogazione SQL che restituisca Nome e Cognome dei delegati che hanno
In
partecipato solo a meeting non italiani.
SELECT Nome,Cognome
FROM Delegato
WHERE IdDelegato not in (SELECT IdDelegato
re
3.2 – Scrivere un’interrogazione SQL che restituisca, per ogni organizzazione, il numero totale
dei delegati che hanno partecipato a tutti i meeting.
ia
1a) Elencare CF e Nome del personale che lavora in un museo di Mantova.
π CF , Nome (PE|(ρ CF ← Direttore (π Direttoreσ Città ="Mantova" MU ) ∪ ρ CF ←Guardiano π Guardiano (SA|ρ CodiceMuseo←Museoσ Città ="Mantova" MU )))
ner
1b) Elencare il museo nel quale c’è la sala con percentuale di umidità minima.
eg R 0 = π PercUmiditàUM
R1 = ρ Perc← PercUmiditàπ PercUmiditàUM
MU | ( ρ Museo←CodiceMuseoπ CodiceMuseo (UM | (R0 − π PercUmiditàσ PercUmidità > Perc (R 0|R1))))
g
1c) Elencare i musei le cui sale ospitano tutte almeno 3 opere.
In
MU − MU | (ρ Museo←CodiceMuseoπ CodiceMuseo (σ NumOpere<3 SA))
1d) Elencare il personale che funge da guardiano per esattamente due sale.
R0 = (π CodiceMuseo, NumSala ,Guardiano SA) | (ρ Museo←CodiceMuseo , Sala ← NumSala (π CodiceMuseo , NumSala ,Guardiano SA))
re
con F = F1 ∨ F2 ∨ F3
V
F2 : sono i casi di due musei coincidenti con sale diverse e due sale coincidenti in musei diversi
PE | (R1 − R 2)
Basi di dati – Prova 04-05-2005 - Soluzioni Query Algebra gruppo B
ia
1a) Elencare il nome e la data di acquisto delle opere collocate in sale senza guardiano.
ner
isnull
1b) Elencare la sala del museo di Mantova nella quale è esposta l’opera acquistata più di recente.
1c) Elencare i musei che hanno solo sale con percentuale di umidità inferiore a 50%
1d) Trovare i musei che hanno almeno due sale con la stessa superficie.
R S
ia
A B C D E
a1 b1 10 b1 10
a1 b2 20 b2 40
ner
a2 b2 20 b3 30
a1 b3 30
a2 b3 30
Si diano (a) l’albero logico della seguente interrogazione, (b) il tipo del risultato e (c) il
eg
valore del risultato:
SELECT A, D, E
g
FROM R, S
WHERE B = D AND E < 40;
In
Albero logico
π b A,D,E
re
σ E<40
ive
⊲⊳
B=D
R S
V
A D E
a1 b1 10
a1 b3 30
a2 b3 30
Sia T il risultato della precedente interrogazione. Si diano (a) l’albero logico della seguente
interrogazione, (b) il tipo del risultato e (c) il valore del risultato:
1
SELECT D, SUM(E) AS SE
FROM T
GROUP BY D
HAVING COUNT(*) > 1;
ia
Albero logico
ner
π b D,SUM(E) AS SE
σ COUNT(∗)>1
eg D γ SUM(E),COUNT(∗)
T
g
Tipo risultato: {(D :string, SE :int)}
In
D SE
b3 60
re
2. Una società di formazione vuole utilizzare una base di dati per gestire le informazioni
riguardanti i corsi offerti, i partecipanti e i docenti.
Di un corso interessano il codice, che lo identifica, il titolo e la durata in ore. Dei corsi
ive
attivi interessano anche le date di inizio e fine, i giorni della settimana, l’aula e l’ora in cui
si tengono le lezioni.
Di un partecipante interessano il codice fiscale, che lo identifica, il nome, l’indirizzo di
V
residenza, il titolo di studio e gli argomenti di interesse. Un partecipante può essere un di-
pendente di un’azienda privata o pubblica, della quale interessano il nome, che la identifica,
il telefono e l’indirizzo. Dei dipendenti pubblici interessano il livello e la posizione ricoper-
ta. Dei partecipanti interessano i corsi attivi che frequentano e i corsi che hanno frequentato
presso la società di formazione, con il voto in decimi ottenuto e l’anno di frequenza.
(Opzionale) Di un docente interessano il codice fiscale, che lo identifica, il nome, l’indi-
rizzo di residenza, il titolo di studio, i corsi attivi che insegnano e i corsi della società di
formazione che possono insegnare. Un docente può essere un dipendente della società di
formazione o collaboratori esterni, e in questo caso interessano anche i recapiti telefonici.
2
SeguitoDa
Voto
AnnoFrequenza
Persone
Corsi PuòEssereInsegnatoDa CF <<PK>> Azienda
Codice <<PK>> Nome Nome <<PK>>
ia
Titolo Residenza Telefono
Durata TitoloStudio Indirizzo
Impiega
ner
Corsi Attivi TenutoDa Partecipanti
DataInizio Docenti
DataFine ArgomentiDiInteresse :seq String
HaLezioni
Giorno
Aula
Ora
g Lezioni
eg Collaboratori
Esterni
RecapitiTelefonici :seq String
Dipendente Pubblico
Livello
PosizioneRicoperta
FrequentatoDa
In
Figura 1: Schema concettuale
(b) Si traduca lo schema concettuale in uno schema relazionale grafico, definendo gli
attributi delle chiavi primarie e delle chiavi esterne.
re
ive
V
3
SeguitoDa
FKCorso <<PK>>
<<FK(Corsi)>>
FKPartecipante <<PK>>
<<FK(Partecipanti)>>
Voto
Corsi
AnnoFrequenza
PkCorso <<PK>>
Codice <<PK1>>
ia
Titolo
Durata PuòEssereInsegnatoDA Persone
FKCorso <<PK>> PkPersona <<PK>>
<<FK(Corsi)>> CF <<PK1>>
FKDocente <<PK>> Nome Azienda
PkAzienda <<PK>>
ner
<<FK(Docenti)>> Residenza
TitoloStudio Nome <<PK1>>
Telefono
Indirizzo
CorsiAttivi InteressatoA
PkCorso <<PK>> Docenti Partecipanti FKPartecipante <<PK>>
<<FK(Corsi)>> PkPersona <<PK>> PkPersona <<PK>> <<FK(Corsi)>>
FKDocente <<FK(Docenti)>> <<FK(Persone)>> <<FK(Persone)>> FKArgomento <<PK>>
DataInizio
DataFine
g egCollaboratori
Esterni
PkPersona <<PK>>
<<FK(Docenti)>>
FKAzienda <<FK(Azienda)>>
Dipendente Pubblico
PkPersona <<PK>>
Livello
<<FK(Partecipanti)>>
<<FK(Argomenti)>>
Argomenti
IdArgomento <<PK>>
Argomento
Lezioni PosizioneRicoperta
PkCorso <<PK>>
<<FK(Corsi Attivi)>> RecapitiTelefonici
In
Giorno <<PK>> FKCollaboratore <<PK>>
Aula <<FK(CollaboratoriEsterni)>>
Ora Telefono <<PK>>
FrequentatoDa
FKCorso <<PK>>
<<FK(CorsiAttivi)>>
FKPartecipante <<PK>>
re
<<FK(Partecipanti)>>
3. Si consideri il seguente schema relazionale, che rappresenta un insieme di film, con i rispet-
tivi attori e case di produzione:
V
4
iii. Il nome della casa di produzione che ha fatto solo film non in lingua italiana.
iv. Il nome degli attori che hanno recitato solo in film in lingua italiana.
v. (Opzionale) Per ogni film che ha solo attori nati dopo il 1980, il titolo del film ed
il numero di attori di sesso femminile (F).
ia
Soluzioni:
i. Per ogni film prodotto dopo il 1985, il titolo ed il nome della casa di produzione.
ner
SELECT f.Titolo, c.NomeCasa
FROM Film f, CaseProduzione c
WHERE f.IdCasaProduzione = c.IdCasaProduzione
AND f.AnnoProduzione > 1985;
SELECT
g eg
ii. Per ogni anno, l’anno ed il numero di film in lingua francese prodotti in quell’an-
no.
f.AnnoProduzione, COUNT(*)
FROM Film f
WHERE f.Lingua = ’Francese’
In
GROUP BY f.AnnoProduzione;
iii. Il nome della casa di produzione che ha fatto solo film non in lingua italiana.
SELECT NomeCasa
FROM CaseProduzione c
re
SELECT NomeCasa
FROM CaseProduzione c
WHERE NOT EXISTS
(SELECT *
V
FROM Film f
WHERE f.IdCasaProduzione = c.IdCasaProduzione
AND (f.Lingua = ’Italiano’));
iv. Il nome degli attori che hanno recitato solo in film in lingua italiana.
SELECT a.Nome
FROM Attori a
WHERE FOR ALL f IN Film, fa f IN FilmAttori
WHERE fa.IdAttore = a.IdAttore AND fa.IdFilm = f.IdFilm
: f.Lingua = ’Italiano’;
5
SELECT a.Nome
FROM Attori a
WHERE NOT EXISTS
(SELECT *
FROM FilmAttori fa, Film f
WHERE fa.IdAttore = a.IdAttore AND fa.IdFilm = f.IdFilm
ia
AND NOT (f.Lingua = ’Italiano’));
v. (Opzionale) Per ogni film che ha solo attori nati dopo il 1980, il titolo del film ed
ner
il numero di attori di sesso femminile (F).
SELECT f.Titolo, COUNT(*)
FROM Film f, FilmAttori fa1, Attori a1
WHERE fa1.IdAttore = a1.IdAttore AND f.IdFilm = fa1.IdFilm AND
g eg
(FOR ALL fa2 IN FilmAttori, a2 IN Attori
WHERE fa2.IdFilm = f.IdFilm AND fa2.IdAttore = a2.IdAttore
: a.AnnoNascita > 1980)
AND a1.Sesso = ’F’
GROUP BY f.IdFilm, f.Titolo;
In
SELECT f.Titolo, COUNT(*)
FROM Film f, FilmAttori fa1, Attori a1
WHERE fa1.IdAttore = a1.IdAttore AND f.IdFilm = fa1.IdFilm
NOT EXISTS
(SELECT *
re