Professional Documents
Culture Documents
a cura di
Marco Salvatore Vanad`a
marco.vanadia@gmail.com
29 aprile 2016
ii
a Giulia
Indice
1 Soluzioni appelli di Base di Dati e Sistemi Informativi
1.1 Appello 5 Febbraio 2014 . . . . . . . . . . . . . . . . . . .
1.2 Appello 28 Febbraio 2014 . . . . . . . . . . . . . . . . . .
1.3 Appello 29 Aprile 2014 . . . . . . . . . . . . . . . . . . . .
1.4 Appello 27 Giugno 2014 . . . . . . . . . . . . . . . . . . .
1.5 Appello 17 Giugno . . . . . . . . . . . . . . . . . . . . . .
1.6 Appello 16 Luglio 2015 . . . . . . . . . . . . . . . . . . . .
1.7 Appello 2 Settembre 2015 . . . . . . . . . . . . . . . . . .
1.8 Appello 22 Settembre 2015 . . . . . . . . . . . . . . . . .
1.9 Appello 12 Novembre 2015 - Modulo I . . . . . . . . . . .
1.10 Appello 5 Febbraio 2016 . . . . . . . . . . . . . . . . . . .
1.11 Appello 18 Febbraio 2016 . . . . . . . . . . . . . . . . . .
1.12 Esonero 20 Aprile 2016 . . . . . . . . . . . . . . . . . . . .
1.13 Traccia parziale appello 16 Febbraio 2012 . . . . . . . . .
Elenco delle figure . . . . . . . . . . . . . . . . . . . . . . . . .
Indice analitico . . . . . . . . . . . . . . . . . . . . . . . . . . .
iii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
2
9
15
20
21
24
26
29
31
33
39
44
49
50
50
Capitolo 1
Soluzioni appelli di
Base dei Dati e
Sistemi Informativi
1.1
CORSO DI LAUREA IN ING. GESTIONALE, INFORMATICA, ELETTRONICA E TELECOMUNICAZIONI PROVA SCRITTA DI BASI DI DATI E SISTEMI INFORMATIVI E SISTEMI
INFORMATIVI
a) Si progetti uno schema concettuale Entit`a-Relazioni per lo scenario pi`
u sotto descritto.
Una base di dati deve essere utilizzata per la gestione di opere darte allinterno di musei. Occorre
quindi memorizzare i dati relativi ai musei di cui si conosce un codice alfanumerico, nome e indirizzo.
Ogni museo `e suddiviso in aree caratterizzate da un identificativo numerico, univoco solo allinterno
del singolo museo, nome e da un valore booleano che indica la presenza di videosorveglianza. Per
ogni opera darte si conosce invece un codice univoco, nome, datazione, valore e larea in cui `e
esposta. In particolare le opere con valore superiore a 10.000 euro dovranno trovarsi solo in aree
con videosorveglianza. Le opere darte sono classificabili come:
dipinti: occorre memorizzare la tecnica utilizzata e la lista di operazioni di restauro a cui
eventualmente lopera `e stata sottoposta. Per ogni operazione si conosce la data di inizio e
fine restauro ed il costo;
sculture: occorre memorizzare il materiale e laltezza della scultura;
altro: di cui si conosce una breve descrizione.
` infine necessario tenere traccia per ogni opera dellartista (o degli artisti) che lhanno realizzata
E
identificati attraverso un codice univoco, nome, cognome e nazionalit`a. Indicare le cardinalit`a delle
relazioni e un identificatore per ciascuna entit`a.
Soluzione 1.1.1. Progettazione concettuale dello schema Entit`a-Relazioni per lo scenario di gestione di opere darte nei musei (diagramma schema E-R in figura 1.1).
Costrutti del modello concettuale:
entit`
a Museo chiave codice, attributi nome, attributi composti sede (normalizzato in attributi atomici: via, civico, cap)
entit`
a debole Area chiave id chiave esterna Museo, attributi museo, videosorveglianza,
business rule videosorveglianza booleano (vincolo dominio)
entit`
a debole Opera chiave codice chiave esterna Area, attributi nome, datazione, valore
business rule se valore>10000) videosorveglianza=1
entit`
a Artista chiave codice, attributi nome, cognome, nazionalit`
a
gerarchia is-a generalizzazione totale esclusiva Opera entit`
a figlie:
entit`
a Dipinto attributi tecnica
entit`
a Scultura attributi materiale, altezza
entit`
a Altro attributi descrizione
entit`
a debole Restauro chiave esterna Dipinto attributi costo, data inizio, data fine
relazione Museo Area, cardinalit`
a 1:N, partecipazione obbligatoria di Area
relazione Area Opera, cardinalit`
a 1:N, partecipazione obbligatoria di Opera
relazione Artista Opera, cardinalit`
a N:N, partecipazione non obbligatoria
relazione Dipinto Restauro, cardinalit`
a 1:N, partecipazione obbligatoria di Restauro
Normalizzazione schema concettuale:
Analisi ridondanze Non sono presenti attributi derivabili o di conteggio.
Eliminazione generalizzazioni Si risolve la generalizzazione Opera con le figlie deboli Dipinto,
Scultura e Altro con associazioni 1:1 con chiave esterna verso lentit`a padre.
Accorpamento/partizionamento di entit`
a/associazioni Non sono necessari accorpamenti/partizionamenti.
Eliminazione attributi composti
mici via, civico, cap.
Scelta chiavi primarie Tutte le chiavi candidate sono scelte come chiavi primarie.
nome
cod
via
Museo
id
1
nome
Area
civico cap
nome cognome
cf
via
videosorveglianza
Artista
cod
nome
Opera
civico cap
datazione
valore
ISA
Dipinto
tecnica
N
Restauro
Scultura
materiale
Altro
altezza
desc
costo
data inizio
data fine
b) Si definiscano le relazioni (tabelle) risultanti in SQL, avendo cura di esplicitare i vincoli di integrit`
a.
Soluzione 1.1.2. Le relazioni ottenute dal mapping relazionale:
1) Museo(cod,nome,via,civico,cap)
2) Area(codMuseo,idArea,nome,videosorveglianza)
3) Opera(codMuseo,idArea,codOpera,nome,datazione,valore)
si `e risolta la gerarchia Opera con le entit`a figlie deboli Dipinto, Scultura e Altro
4) Dipinto(codMuseo,idArea,codOpera,tecnica)
5) Scultura(codMuseo,idArea,codOpera,materiale)
CHAR (10) ,
idArea
CHAR (6) ,
codOpera
CHAR (16) ,
materiale
VARCHAR (128) ,
altezza
FLOAT ,
PRIMARY KEY ( codMuseo , idArea , codOpera ) ,
FOREIGN KEY ( codMuseo , idArea , codOpera )
REFERENCES Opera ( codMuseo , idArea , codOpera )
);
CREATE TABLE AltraOpera (
codMuseo
CHAR (10) ,
idArea
CHAR (6) ,
codOpera
CHAR (16) ,
descrizione VARCHAR (256) ,
PRIMARY KEY ( codMuseo , idArea , codOpera ) ,
FOREIGN KEY ( codMuseo , idArea , codOpera )
REFERENCES Opera ( codMuseo , idArea , codOpera )
);
CREATE TABLE Restauro (
codMuseo
CHAR (10) ,
idArea
CHAR (6) ,
codDipinto CHAR (16) ,
costo
NUMERIC (10 ,2) ,
data_inizio DATE ,
data_fine
DATE ,
PRIMARY KEY ( codMuseo , idArea , codDipinto ) ,
FOREIGN KEY ( codMuseo , idArea , codDipinto )
REFERENCES Dipinto ( codMuseo , idArea , codOpera )
);
CREATE TABLE Artista (
cf
nome
cognome
nazionalit `
a
);
2) Selezionare le abitazioni che durante il 2013 non hanno mai presentato un consumo giornaliero
superiore ai 5 kWh
Soluzione 1.1.5. Query di selezione con condizione e valore in elenco da subquery con
condizione
SELECT
FROM
WHERE
*
abitazione
codice IN (
SELECT
DISTINCT codAbitazione
FROM
consumi
WHERE
consumi . data BETWEEN 2013/01/01 AND 2013/12/31
AND
codAbitazione NOT IN (
SELECT
DISTINCT codAbitazione
FROM
consumi
WHERE
consumi . data BETWEEN 2013/01/01 AND 2013/12/31
AND
kWh_consumati > 5))
e) SOLO N.O.
Illustrare la sintassi di un trigger, descrivendo in particolare il concetto di granularit`a
Soluzione 1.1.6. In una base di dati attiva `e possibile attivare un comportamento reattivo
a modifiche del database con un processore di regole di produzione basate sul paradigma
Evento-Condizione-Azione.
La sintassi di definizione di un trigger:
CREATE TRIGGER NomeTrigger
AFTER|BEFORE
modalit`
a
INSERT|UPDATE|DELETE
evento
ON TabellaTarget
[REFERENCING [OLD AS OldAlias ], [NEW AS NewAlias ] ] alias referenze
[FOR EACH [STATEMENT|ROW]]
granularit`
a
[WHEN predicato condizione ]
condizione per granularit`
a ROW
statementSQL
azione
Un trigger pu`
o essere attivato immediatamente prima o dopo una primitiva di modifica dei
`
dati (INSERT,UPDATE,DELETE), o in differita per transazioni, con un livello di granularita
di attivazione per singola tupla o per intera primitiva di modifica. Lattivazione pu`o essere
sottoposta a condizione espressa da un predicato. Lazione eseguita `e espressa da un statement
SQL, eventualmente contenente primitive di linguaggio proprietarie.
` a livello di tupla, iterativaUna primitiva di evento pu`
o essere controllata con granularita
mente su tutte le tuple (sotto eventuale condizione WHEN) con lesecuzione dellazione dichiarata
nello statement SQL del trigger, con le seguenti priorit`a decrescenti dettate dalla modalit`
ae
granularit`
a:
1)
2)
3)
4)
BEFORE STATEMENT
BEFORE ROW
AFTER ROW
AFTER STATEMENT
Descrivere le propriet`
a acide delle transazioni
Soluzione 1.1.7. Le propriet`a acide delle transazioni sono:
Atomicit`
a Una transazione `e una unit`a atomica indivisibile di lavoro: le operazioni definite
nella sequenza compresa tra BoT e EoT devono lasciare la base di dati o nello stato precedente alla esecuzione della transazione (abort) o devono essere applicati tutti gli effetti
delle operazioni eseguite (commit).
1.2
10
NUMERIC (20) ,
11
nomecognome
cf
ragione sociale
Cliente
cod
data stipula
via
civico
TelCom
durata
nome
cod
N
1
Contratto
pref int
cap
capacit`a
SIM
pref
numero
ISA
data ultima ricarica
Abbonamento
linea dati
Ricaricabile
N canone mensile
N
Servizio
stato contratto
cod
desc
costo mensile
ragSocComp
VARCHAR (35)
REFERENCES CompagniaTelefonica ( ragione_sociale ) ,
p re fi s so _ in te r na z io na l e VARCHAR (4) CHECK ( VALUE IN ( +39 )) ,
prefisso
NUMERIC (3 ,0) ,
numero
NUMERIC (7 ,0) ,
capacit `
a
INTEGER ,
PRIMARY KEY ( codSim , ragSocComp )
);
CREATE TABLE Cliente (
CF
nome
cognome
via
civico
cap
);
12
` stata
c) Si vuole realizzare un database relativo alla assegnazione delle postazioni in un call center. E
a tal fine costruita, da un inesperto progettista, ununica tabella descritta dai seguenti attributi:
(numero_fila, numero_postazione, descrizione_postazione, codice_operatore,
nome_operatore, cognome_operatore, numero_telefono, data_turno,
ora_inizio_turno, ora_fine_turno, num_operatori_turno, num_telefonate)
Nellipotesi che numero postazione sia univoco solo per fila, che un operatore possa cambiare postazione in ogni turno, ma che gli venga assegnato sempre lo stesso numero di telefono e che
num telefonate sia il numero di telefonate che un operatore fa in un determinato turno, se ne determini la chiave e si individuino, esplicitandole, le dipendenze funzionali. Sulla base di queste si
proceda alla normalizzazione in 3a forma normale, preservando le dip. funzionali.
13
*
Corso_di_Laurea
codice IN (
SELECT
codice_corso
FROM
Studente NATURAL JOIN Iscrizione_Annuale AS A
WHERE
anno_accademico = 2013/2014
AND
anno_iscrizione = 2012/2013
GROUP BY codice_corso
HAVING
count (*) = (
SELECT
count (*)
FROM
Studente NATURAL JOIN Iscrizione_Annua le
WHERE
anno_accademico = 2012/2013
AND
anno_iscrizione = 2012/2013
AND
codice_corso = A . codice_corso
)
14
S .* , crediti_sostenuti
Studente S NATURAL JOIN Iscrizione_Annuale
anno_iscrizione = 2012/2013
S . matricola NOT IN (
SELECT matricola
FROM
Iscrizione_Annuale
WHERE
matricola = S . matricola
AND
anno_accademico = 2013/2014
e) SOLO N.O.
Definire il concetto di vista aggiornabile, descrivendo in particolare lutilizzo della clausola
check option
Soluzione 1.2.6. Una vista `e una tabella virtuale definita su una lista di attributi appartenenti ad altre viste o tabelle di base dello schema le cui tuple sono il risultato di una query
di selezione che ne estrae i valori. Quando `e possibile determinare in modo univoco a quale
attributo di quale tabella base appartengono tutti i valori nella vista si ha una vista aggiornabile. Sotto le seguenti ipotesi `e possibile eseguire una operazione di UPDATE su una vista
aggiornabile:
non
non
non
non
non
pu`
o avere attributi espressi come funzioni di aggregazione o calcolo di espressioni
pu`
o applicare un selettore DISTINCT
pu`
o effettuare JOIN tra tabelle
pu`
o raggruppare e filtrare dati con direttive GROUP BY e HAVING
presenta condizioni WHERE con subquery
Nella definizione di vista aggiornabile `e inoltre possibile specificare lopzione WITH [LOCAL|
CASCADED] CHECK OPTION per impedire che una modifica a seguito di un UPDATE abbia come
risultato tuple che non rispettano il predicato di selezione della vista. Lopzione LOCAL serve
a richiedere un controllo limitato alla vista definita, lopzione CASCADED richiede un controllo
propagato alle viste nidificate.
Descrivere brevemente i livelli di isolamento in SQL
Soluzione 1.2.7. A partire da SQL:1999 `e possibile indicare per ogni transazione il livello
di isolamento richiesto al controllore di concorrenza basato sul protocollo di locking in 2
fasi stretto:
1) serializable: applica il livello massimo di isolamento con 2PL stretto e lock di predicati.
Evita tutte le anomalie a scapito delle prestazioni
2) repeatable read: applica il 2PL stretto con lock di lettura a livello di tupla. Evita
tutte le anomalie eccetto linserimento fantasma (phantom insert) perche non utilizza i
lock di predicato. Prestazioni migliori a scapito della consistenza.
3) read committed: utilizza lock condivisi di lettura ma non rispetta il 2PL stretto. Evita
le anomalie di lettura sporca ma `e affetto da tutte le altre anomalie. Ottime prestazioni
per transazioni di sola lettura, grave rischio di inconsistenza in caso di scritture.
4) read uncommitted: non emette alcun lock condiviso in lettura ne rispetta lock esclusivi
in scrittura di altre transazioni. Utilizzata per transazioni in sola lettura con le massime
prestazioni. Pu`
o presentare tutte le anomalie esclusa la perdita di aggiornamento (per
trans. sola lettura).
Illustrare il problema dellimpedence mismatch, lutilit`a e la sintassi di un cursore
1.3
15
id capienza sala3D
Film
proietta
Proiezione
durata min
avviene in
Sala
N
app
N
cod
Biglietto
Cinema
N
ISA
email
cognomenome
Utente
via
1
cap
civico
offre
Online
Botteghino
N
Servizio
desc
Figura 1.3: Diagramma E/R scenario programmazione film nei cinema
b) Si definiscano le relazioni (tabelle) risultanti in SQL, avendo cura di esplicitare i vincoli di integrit`
a.
nomevia
civ
cap
16
);
CREATE TABLE Cinema (
cod
nome
via
civico
cap
);
17
18
Gli attributi che formano la chiave sono: cf iscritto, cod corso, livello, data lezione
Classificazione delle dipendenze funzionali:
Dipendenza piena dalla chiave: Presenza
Dipendenza parziale dalla chiave: Iscritto, Corso, LivelloCorso, IscrizioneCorso,
Presenza
Dipendenza transitiva: Istruttore
Le dipendenze funzionali si trasformano nelle seguenti tabelle:
Iscritto(cf iscritto,nome,cognome,via,civico,cap)
Istruttore(cf istruttore,nome,cognome)
Corso(cod corso,cf istruttore,nome corso)
LivelloCorso(cod corso,livello,numero iscritti)
IscrizioneCorso(cf iscritto,cod corso,livello)
Lezione(cod corso,livello,data lezione,ora lezione,programma)
Presenza(cod iscritto, cod corso,livello,data lezione,presenza)
Medico
cf IN (
SELECT
FROM
WHERE
GROUP BY
HAVING
)
ORDER BY cognome , nome
DISTINCT cfMedico
Prescrizione
(( data_ BETWEEN 2013/01/01 AND 2013/12/31 )
AND ( cfPaziente IN (
SELECT cf
FROM
Paziente
WHERE
et `
a >60)))
cfMedico
count (*) >1000
19
2) Visualizzare per ogni farmaco di tipo FANS, il numero di prescrizioni effettuate ed il numero
di pazienti a cui `e stato prescritto
Soluzione 1.3.3. Soluzione con funzioni aggregazione [da risultati inattesi in MySql, conta
solo sul raggruppamento non su cfPaziente]:
SELECT
FROM
WHERE
GROUP BY
fans2013 AS
codFarmaco , COUNT (*) AS num_prescrizioni
prescrizione
codFarmaco IN ( SELECT codice
FROM farmaco
WHERE ( tipo = FANS ))
GROUP BY codFarmaco ;
e) SOLO N.O.
Illustrare le operazioni binarie dellalgebra relazionale
Illustrare brevemente la struttura di un albero B e B+ e le modalit`a di ricerca evidenziando
le differenze
Con riferimento alle tabelle al punto (d) scrivere gli statement SQL relativi alle seguenti
operazioni:
1) aumentare di 2 euro il costo dei farmaci di tipo FANS;
UPDATE Farmaco
SET costo = costo +2
WHERE tipo = " FANS "
20
1.4
CORSO DI LAUREA IN ING. GESTIONALE, INFORMATICA, ELETTRONICA E TELECOMUNICAZIONI PROVA SCRITTA DI BASI DI DATI E SISTEMI INFORMATIVI E SISTEMI
INFORMATIVI
a) Si progetti uno schema concettuale Entit`a-Relazioni per lo scenario pi`
u sotto descritto.
Una base di dati deve essere utilizzata per la gestione delle ricette mediche rilasciate da differenti
medici. Ogni medico `e identificato dai propri dati anagrafici e dalla propria specializzazione, mentre
per ogni paziente si conosce codice fiscale, nome, cognome, sesso (indicato come M o F), data di
nascita e residenza. Un medico pu`
o rilasciare delle ricette mediche identificate da un codice alfanumerico univoco composto da 17 caratteri, data di emissione, paziente di riferimento, denominazione
dellente di competenza, numero progressivo regionale, sigla provincia (2 caratteri) e codice ASL (3
numeri). Le ricette mediche si dividono inoltre in due tipi:
rilasciate per prescrivere farmaci: in questo caso si conosce la lista dei farmaci prescritti (per
un massimo di 5) con la relativa quantit`a. Ogni farmaco `e definito attraverso un codice
alfanumerico univoco rispetto alla propria casa farmaceutica (descritta a sua volta attraverso
ragione sociale e sede), nome, tipologia, descrizione e un attributo booleano che indichi se si
tratta di un farmaco generico o meno;
rilasciate per prescrivere degli esame: in questo caso si conosce una descrizione dellesame
prescritto.
Indicare le cardinalit`
a delle relazioni e un identificatore per ciascuna entit`a.
b) Si definiscano le relazioni (tabelle) risultanti in SQL, avendo cura di esplicitare i vincoli di integrit`a.
c) Si vuole realizzare un database relativo alle pubblicazioni di articoli su riviste scientifiche. E stata
a tal fine costruita, da un inesperto progettista, ununica tabella descritta dai seguenti attributi:
(ISSNRivista, nomeRivista, genereRivista, editore, anno,
numero_rivista, numero_pagine, prefazione, idArticolo,
titolo, abstract, cfAutore, nome, cognome, email, ordine)
Nellipotesi che ogni rivista sia pubblicata pi`
u volte in un anno e che ordine sia un valore intero usato
per elencare gli autori di una pubblicazione, se ne determini la chiave e si individuino, esplicitandole,
le dipendenze funzionali. Sulla base di queste si proceda alla normalizzazione in 3a forma normale,
preservando le dip. funzionali.
d) Date le seguenti relazioni:
a)
ATTORE (matricola, nome, cognome, nazionalit`
FILM (codice, titolo, anno produzione, genere, costo produzione, totale incassi)
CAST (cod film, matricola, ore impegnate, compenso attore film)
esprimere in SQL le seguenti interrogazioni:
1) Selezionare per ogni attore il film in cui ha ottenuto il compenso maggiore
2) Visualizzare i film del 2013 che presentano nel cast attori di almeno tre nazionalit`a diverse
e) SOLO N.O.
Illustrare le primitive del buffer manager
Si dia una definizione di vista aggiornabile e si illustri la sintassi SQL per creare una vista
Descrivere le differenze tra uno schema a stella ed uno schema a fiocco di neve.
1.5
21
Appello 17 Giugno
CORSO DI LAUREA IN ING. GESTIONALE, INFORMATICA, ELETTRONICA E TELECOMUNICAZIONI PROVA SCRITTA DI BASI DI DATI E SISTEMI INFORMATIVI E SISTEMI INFORMATIVI
a) Si progetti uno schema concettuale Entit`a-Relazioni per lo scenario pi`
u sotto descritto.
Una base di dati deve essere utilizzata per gestire dei i dati relativi a differenti ospedali. Ogni ospedale `e identificato da un codice univoco, nome e indirizzo. Per ciascun ospedale si conoscono inoltre
i reparti che lo compongono, identificati da un codice a 6 cifre (univoco solo rispetto allospedale),
nome e numero di posti letto. Si conoscono inoltre le informazioni relative ai dipendenti di cui
si conosce codice fiscale, nome, cognome, data di assunzione e lista di reparti in cui lavorano. I
dipendenti si dividono in:
infermieri, si conoscono gli anni di servizio;
medici, si conosce la data di abilitazione alla professione e lelenco di specializzazioni ottenute
con relativa data.
Si conoscono inoltre le informazioni dei pazienti (cf, nome, cognome, data di nascita) e dei ricoveri
effettuati identificati da data e ora del ricovero, motivazione, codice gravit`a (rosso, giallo, verde),
paziente di riferimento, reparto interessato. Sar`a presente infine anche un attributo booleano che
indica se il paziente `e stato dimesso o meno. Occorre verificare al momento del ricovero che ci siano
dei posti a disposizione nel relativo reparto.
Indicare le cardinalit`
a delle relazioni e un identificatore per ciascuna entit`a.
b) Si definiscano le relazioni (tabelle) risultanti in SQL, avendo cura di esplicitare i vincoli di integrit`
a.
` stata a tal fine costruita,
c) Si vuole realizzare un database relativo alle gestione di gare podistiche. E
da un inesperto progettista, ununica tabella descritta dai seguenti attributi:
(nome_associazione_sportiva, sede_ associazione, anno_fondazione_associazione,
cf_atleta, nome_atleta, cognome_atleta, cod_evento, luogo_evento, data_evento,
ora_evento, lunghezza_percorso, numero_pettorale, posizione, tempo_ottenuto)
Nellipotesi che ogni atleta appartenga ad unassociazione sportiva e che il numero di pettorale sia
univoco solo rispetto ad un singolo evento, se ne determini la chiave e si individuino, esplicitandole,
le dipendenze funzionali. Sulla base di queste si proceda alla normalizzazione in 3a forma normale,
preservando le dip. funzionali.
Soluzione 1.5.1. Si determinano le dipendenze funzionali e la chiave per gli attributi della tabella
(nome_associazione_sportiva, sede_associazione, anno_fondazione_associazione,
cf_atleta, nome_atleta, cognome_atleta, cod_evento, luogo_evento, data_evento,
ora_evento, lunghezza_percorso, numero_pettorale, posizione, tempo_ottenuto)
Ipotesi preliminari:
IP1 : ogni atleta appartiene ad una associazione
IP2 : ogni numero di pettorale `e univoco solo per il relativo evento
Dipendenze funzionali:
Associazione: nome associazione sportiva via, civico, cap, anno fondazione
Atleta: cf atleta nome atleta, cognome atleta, nome associazione sportiva
Evento: cod evento luogo evento, data evento, ora evento, lunghezza percorso
Partecipazione: cod evento, numero pettorale cf atleta, posizione, tempo ottenuto
22
*
ricetta
codice IN
SELECT
FROM
WHERE
(
codRicetta
lista_ingredienti
codIngrediente = (
SELECT
codice
FROM
ingrediente
WHERE
nome = basilico
)
)
ORDER BY
tempo DESC ;
2) Selezionare per ogni ingrediente il numero di regioni ed il numero di ricette in cui `e utilizzato
e) SOLO N.O.
Illustrare il concetto di decomposizione senza perdite e le relative condizioni da verificare
Soluzione 1.5.3. Data una relazione R(X) su un insieme di attributi X = X1 X2 , si ha
una decomposizione senza perdite(loseless join) se il JOIN delle proiezioni di R su X1 e
X2 `e uguale a R (ovvero non contiene tuple spurie)
X1 (R) B CX2 (R) = R
R si decompone senza perdite su due relazioni se linsieme degli attributi comuni `e chiave per
almeno una delle relazioni decomposte (cond. suff. ma non necessaria).
Descrivere le principali anomalie legate a problemi di concorrenza tra transazioni
Soluzione 1.5.4. Anomalie di concorrenza:
23
24
1.6
CORSO DI LAUREA IN ING. GESTIONALE, INFORMATICA, ELETTRONICA E TELECOMUNICAZIONI PROVA SCRITTA DI BASI DI DATI E SISTEMI INFORMATIVI E SISTEMI
INFORMATIVI
a) Si progetti uno schema concettuale Entit`a-Relazioni per lo scenario pi`
u sotto descritto.
Una base di dati deve essere utilizzata per gestire dei i dati relativi ad un laboratorio di analisi
cliniche. Ogni dipendente del laboratorio `e identificato da codice fiscale, nome, cognome e ruolo.
Si conoscono inoltre le informazioni dei pazienti (cf, nome, cognome, data di nascita). Per ogni
prelievo realizzato si conosce data e ora dello stesso, numero di campioni prelevati, paziente di
riferimento e dipendente che si `e occupato del prelievo. Ogni prelievo prevede una serie di esami,
identificato da un codice univoco, descrizione e costo. A seconda del prelievo, si conosce lesito
dellesame e la sua tipologia (urgente/non urgente). I prelievi si suddividono inoltre in:
interni, realizzati nel centro di analisi, a cui `e associata una data di consegna;
esterni, realizzati in ospedale di cui si conosce ragione sociale, sede ed un attributo booleano
che indica la presenza di convenzioni con il laboratorio. Occorre infine verificare che, per ogni
prelievo, il numero di esami richiesto sia al massimo pari a tre volte il numero dei campioni
prelevati.
Indicare le cardinalit`
a delle relazioni e un identificatore per ciascuna entit`a.
b) Si definiscano le relazioni (tabelle) risultanti in SQL, avendo cura di esplicitare i vincoli di integrit`a.
` stata a tal fine costruita,
c) Si vuole realizzare un database relativo alle ricariche di auto elettriche. E
da un inesperto progettista, ununica tabella descritta dai seguenti attributi:
(cod_gestore, nome_gestore, sede_gestore, cod_colonnina, indirizzo,
costo_per_kWh, targa_auto, modello_auto, cf_proprietario, nome_proprietario,
cogn_proprietario, data_ricarica, ora_ricarica, durata, kWh_ricaricati)
Nellipotesi che il codice di una colonnina sia univoco solo rispetto ad un gestore di energia, se ne
determini la chiave e si individuino, esplicitandole, le dipendenze funzionali. Sulla base di queste si
proceda alla normalizzazione in 3a forma normale, preservando le dip. funzionali.
Soluzione 1.6.1. Ipotesi:
(IP1) lattributo cod colonnina sia univoco solo rispetto all Gestore
(IP2) aggiungo ipotesi: ogni Auto ha un Proprietario
(IP3) aggiungo ipotesi: un Auto pu`
o effettuare una Ricarica per volta
Dipendenze funzionali:
(DF1) Gestore: codGestore nome, via,civico,cap
(DF2) Colonna: codGestore, codColonna via,civico,cap,costo kWh
(DF3) Auto: targa modello, cfProprietario (IP2)
(DF4) Proprietario: cfProprietario nome, cognome
(DF5) Ricarica: targa,data,ora durata, kWh caricati, codGestore, codColonna
Gli attributi che formano la chiave: targa, dataRicarica, oraRicarica
Classificazione dipendenze funzionali
Dipendenza funzionale piena: Ricarica
Dipendenza funzionale parziale: Auto
25
codFilm
FilmCast
compenso >10000
codFilm
count ( codAttore ) >10
2) Selezionare per ogni attore il numero di film in cui ha partecipato, visualizzando i risultati in
ordine decrescente sulla base di tale valore
Soluzione 1.6.3. Query di selezione con raggruppamento e ordinamento
SELECT
FROM
GROUP BY
ORDER BY
e) SOLO N.O.
Illustrare il funzionamento della primitiva FIX del Buffer Manager
Illustrare la versione base e la variante strict del locking a 2 fasi
Definire il concetto di granularit`a di un trigger
26
1.7
27
*
Film
codFilm IN (
( SELECT codFilm
FROM
FilmCast
WHERE
codAttore
SELECT
FROM
WHERE
AND
) INTERSECT
( SELECT codFilm
FROM
FilmCast
WHERE
codAttore
SELECT
FROM
WHERE
AND
= (
codAttore
Attore
nome = Brad
cognome = Pitt
= (
codAttore
Attore
nome =
cognome = Damon )
2) Selezionare per ogni attore la somma dei compensi ottenuti nel 2015
Soluzione 1.7.3. Query di selezione con funzione di aggregazione, condizione e raggruppamento
SELECT
FROM
WHERE
)
GROUP BY codAttore
e) SOLO N.O.
28
1.8
29
30
*
Attore
codAttore IN (
SELECT
FROM
GROUP BY
HAVING
codAttore
FilmCast
codAttore
count ( codFilm ) >= 10
*
Film
codFilm NOT IN (
SELECT
FROM
WHERE
DISTINCT codFilm
FilmCast
codAttore = (
SELECT
codAttore
FROM
Attore
WHERE
nome = Johnny
AND
cognome = Deep
)
)
e) SOLO N.O.
Illustrare le operazioni unarie dellalgebra relazionale
Descrivere brevemente la struttura di un albero B, la modalit`a di ricerca e le differenze con
un albero B+
Illustrare larchitettura di un Data Warehouse
1.9
31
C1 . codAttore , C1 . codFilm
Film NATURAL JOIN FilmCast AS C1
incasso >= ALL (
SELECT
MAX ( incasso )
FROM
Film NATURAL JOIN FilmCast C2
WHERE
C1 . codAttore = C2 . codAttore
2) Visualizzare i film in cui sono presenti sia attori francesi che italiani
Soluzione 1.9.2. Query di selezione con condizione di appartenenza ai risultati di operazione
insiemistica tra subquery
32
*
Film
codFilm IN (
( SELECT
FROM
WHERE
INTERSECT
( SELECT
FROM
WHERE
DISTINCT codFilm
FilmCast NATURAL JOIN Attore
nazionalit `
a = francese )
DISTINCT codFilm
FilmCast NATURAL JOIN Attore
nazionalit `
a = italiana )
d) SOLO N.O.
Illustrare gli operatori binari dellalgebra relazionale
Definire il concetto di transazione ed illustrare i principali comandi applicabili
Illustrare il problema dellimpedence mismatch indicando inoltre una possibile soluzione
1.10
33
34
psw dataIscr
Utente
dataFine
1
Abbonamento
data ora
N
Visione
N
costo
ISA
Base
titolo
Premium
data
cod
Contenuto
N
bambini
giudizio
ISA
Dispositivo
N
Film
nome
MAC
durata
Serie TV
1
anno genere
desc
N
Stagione
id
num puntate
Figura 1.4: Diagramma E-R per lo scenario del sistema di accesso a contenuti video
35
cod
tipo
Abbonamento
Contenuto
N
1
N
Film
Stagione
Serie TV
Dispositivo
id
Figura 1.5: Risoluzione gerarchie ISA Abbonamento e Contenuto
b) Si definiscano le relazioni (tabelle) risultanti in SQL, avendo cura di esplicitare i vincoli di integrit`
a.
CREATE TABLE Utente (
email
pw
data_iscr
);
36
37
2) Visualizzare gli attori che nel 2015 hanno ottenuto il compenso maggiore e minore
Soluzione 1.10.3. Query nidificata con condizione confronto valore con lista di valori da
subquery
SELECT
FROM
WHERE
*
Attore
codAttore
SELECT
FROM
WHERE
AND
IN (
DISTINCT codAttore
FilmCast NATURAL JOIN Film
(
( compenso >= ALL (
SELECT
MAX ( compenso )
FROM
FilmCast ) )
OR
( compenso <= ALL (
SELECT
MIN ( compenso )
FROM
FilmCast ) )
)
anno =2015
e) SOLO N.O.
Illustrare le prime tre forme normali
Soluzione 1.10.4. Prima Forma Normale La prima Forma Normale (1NF) si ha a
condizione, fondamentale nei database relazionali, per cui ogni attributo ha un dominio
definito e i valori atomici assunti appartengono al dominio. Inoltre ogni relazione della
base di dati deve avere definita una chiave primaria.
Seconda Forma Normale La seconda Forma Normale (2NF ) si ha per una relazione
in 1NF in cui ogni attributo che non fa parte della chiave primaria dipende interamente
dalla chiave stessa e non solo da parte di essa (non sono definite dipendenze parziali). [Le
relazioni con chiave composta da un solo attributo atomico sono in 2NF]
Terza Forma Normale La terza Forma Normale si ha per una relazione in 2NF in cui
ogni dipendenza X Y deve verificare una delle seguenti:
1) X `e superchiave
2) Y `e attributo primo (cio`e fa parte di una chiave di R)
Inoltre non esistono attributi che dipendono da altri attributi non chiave (non sono definite
dipendenze transitive).
Si dimostra che esiste un algoritmo di sintesi di schemi in terza forma normale a partire
dalla decomposizione delle dipendenze funzionali che garantisca la conservazione delle
dipendenze e la decomposizione senza perdite.
Descrivere il locking a 2 fasi e illustrare le differenze tra questo ed il locking a due fasi stretto
Soluzione 1.10.5. Nel protocollo di locking a 2 fasi (2PL) una transazione ha una fase
iniziale dopo la dichiarazione di Begin of Transaction in cui si acquisiscono i lock per le
risorse. Dopo lutilizzo delle risorse, al primo rilascio di un lock comincia la fase di rilascio
finale dei lock precedentemente acquisiti: non `e pi`
u possibile acquisire lock fino alloperazione
di chiusura End of Transaction.
38
BoT
EoT
1.11
39
nomecognome
cf
Studente
freq
Classe
nome
N
app
cap
Istituto
ISA
accomp
tipo tecnic
Liceo
tipo liceo
cf
Tecnico
iscritti
Docente
num classi
ha
nome
cognome
cod
desc
Indirizzo
b) Si definiscano le relazioni (tabelle) risultanti in SQL, avendo cura di esplicitare i vincoli di integrit`
a.
Soluzione 1.11.1. Le relazioni ottenute dal mapping relazionale:
1) Docente(CF,nome,cognome)
si `e risolta la gerarchia Istituto con le entit`a figlie deboli Liceo e Tecnico
40
41
c) Si vuole realizzare un database relativo alla gestione degli appuntamenti presso un poliambulatorio
` stata a tal fine costruita, da un inesperto progettista, ununica tabella
medico convenzionato ASL. E
descritta dai seguenti attributi:
(codMedico, nomeMedico, cognomeMedico, specializzazioneMedico,
codPaziente, nomePaziente, cognomePaziente, dataAppuntamento,
oraAppuntamento, diagnosi, codRicetta, descrizioneRicetta)
Nellipotesi che codRicetta sia univoco e che per ogni appuntamento possa essere prodotta una sola
diagnosi, ma anche pi`
u di una ricetta, se ne determini la chiave e si individuino, esplicitandole, le
dipendenze funzionali. Sulla base di queste si proceda alla normalizzazione in terza forma normale,
preservando le dip. funzionali.
d) Date le seguenti relazioni:
FILM ( codFilm , titolo , anno , genere , durata , incasso )
ATTORE ( codAttore , nome , cognome , nazionalit `
a)
CAST ( codFilm , codAttore , compenso )
42
2) Visualizzare i film di genere drammatico in cui non hanno recitato attori italiani
Soluzione 1.11.3. Tre query di selezione nidificate con condizione su lista di valori
SELECT
FROM
WHERE
AND
*
Film AS F
genere = drammatico
codFilm NOT IN (
SELECT
DISTINCT codFilm
FROM
FilmCast AS C
WHERE
( F . codFilm = C . codFilm )
AND
( codAttore IN (
SELECT
codAttore
FROM
Attore
WHERE
nazionalit `
a = italiano )
)
);
F .*
Film AS F NATURAL JOIN FilmCast C
genere = drammatico
codAttore NOT IN (
SELECT
codAttore
FROM
Attore
WHERE
nazionalit `
a = italiano );
e) SOLO N.O.
Illustrare gli operatori unari dellalgebra relazionale
Soluzione 1.11.4. Gli operatori unari dellalgebra relazionale definiti su relazioni e che
producono relazioni (algebra chiusa) sono
operatore di selezione condizione (relazione)
operatore di proiezione attributi (relazione)
operatore di ridenominazione %lista attributi rinominatilista attributi (relazione)
Selezione Loperatore di selezione cond (R) produce una nuova relazione sugli stessi attributi di R che contiene un sottoinsieme delle tuple di R che soddisfano la condizione di
selezione cond.
La condizione di selezione `e un predicato sugli attributi di R composto da connettivi logici
e operatori di confronto applicati ad attributi (di domini compatibili) e valori costanti.
La relazione risultante mantiene il grado (numero di attributi) della relazione R di
` pu`
partenza. La cardinalita
o essere minore o uguale rispetto alla relazione R.
Loperatore di selezione `e commutativo:
cond1 (cond2 (R)) = cond2 (cond1 (R))
43
Proiezione Loperatore di proiezione attributi (R) produce una nuova relazione su un sottoinsieme di attributi della relazione R, quindi un grado minore o uguale a quello della
` risultante pu`o essere diversa.
relazione R. La cardinalita
Il risultato della proiezione produce lo stesso numero di tuple di R se e solo se la lista degli
attributi su cui si effettua la proiezione `e superchiave per R.
Loperatore proiezione non `e commutativo.
Ridenominazione Loperatore ridenominazione consente di ottenere una nuova relazione
con uno o pi`
u attributi rinominati
%lista attributi rinominatilista attributi (R)
` della relazione.
Loperatore non modifica il grado e cardinalita
Illustrare la tecnica di ripresa a caldo
Soluzione 1.11.5. In un DBMS transazionale al fine di garantire la durabilit`
a /persistenza dei
dati si ha un sottosistema controllore di affidabilit`
a che implementa le primitive di ripristino
del sistema in caso di guasti hardware/software.
La ripresa a caldo avviene a seguito di un guasto di sistema (software failure) che ha
causato la perdita di dati in memoria centrale (pagine del buffer) contenenti le operazioni di
transazioni che pur essendo giunte in commit non siano state rese persistenti nel database su
memoria di massa.
La ripresa a caldo `e articolata in 4 fasi eseguite per ripristinare la base di dati utilizzando le
informazioni presenti nei file di log di sistema e delle transazioni:
1) ricerca dellultimo checkpoint inserito nel log di sistema partendo a ritroso dal riferimento allultima operazione prima del guasto (log top);
2) si costruiscono due insiemi REDO-set e UNDO-set che contengono rispettivamente le
transazioni che sono giunte a commit, le cui operazioni saranno rieseguite nellultima fase,
e le transazioni che non sono pervenute a compimento con un commit o che sono state
esplicitamente annullate con un abort, le cui operazioni verranno annullate nella terza
fase;
3) si annullano le operazioni delle transazioni presenti nellUNDO-set, scorrendo il log allindietro (eventualmente anche oltre il checkpoint) fino alle rispettive operazioni di BOT
(Begin of Transaction);
4) si eseguono le operazioni delle transazioni dellinsieme REDO-set procedendo in avanti
fino alla fine del log.
Descrivere le differenze tra uno schema a stella ed uno schema a fiocco di neve
44
1.12
45
nome
piva
marca
Auto concessionaria
modello
Auto KM 0
Optional
costo alimentazione
ISA
num rate
id
Auto
targa
cilindrata
data acquisto
Auto usata
data vendita
km percorsi
anno immatricolazione
cf
nomecognome
Proprietario
cap civico
via
46
VARCHAR (128) ,
VARCHAR (16) ,
NUMERIC (5 ,0)
);
CREATE TABLE Auto (
targa
CHAR (7) PRIMARY KEY ,
marca
VARCHAR (32) ,
modello
VARCHAR (64) ,
cilindrata INTEGER ,
alimentazione
VARCHAR (7)
CHECK ( VALUE IN ( diesel , benzina , gpl , metano ) ,
costo
NUMERIC (8 ,2)
);
CREATE TABLE AutoKMZero (
targa
CHAR (7) PRIMARY KEY REFERENCES Auto ( targa ) ,
num_rate
SMALLINT ,
importo_fisso_rata
NUMERIC (8 ,2)
);
CREATE TABLE Autousata (
targa
CHAR (7) PRIMARY KEY REFERENCES Auto ( targa ) ,
num_rate
SMALLINT ,
importo_fisso_rata
NUMERIC (8 ,2)
);
CREATE TABLE Optional (
id
desc
costo_agg
);
47
` stata a tal
c) (5pt) Si vuole realizzare un database relativo agli orari delle lezioni del Politecnico. E
fine costruita, da un inesperto progettista, ununica tabella descritta dai seguenti attributi:
(codDocente, nome, cognome, codCorso, nomeCorso, cfu, codCdL, nomeCdL,
num iscritti CdL, annoCdL, semestre, cfu tot semestre, giorno settimana, ora)
Nellipotesi che per ogni corso si conosca il docente e il CdL di riferimento e che annoCdL indichi
il particolare anno di ciascun CdL (1,2,3,4 o 5), se ne determini la chiave e si individuino, esplicitandole, le dipendenze funzionali. Sulla base di queste si proceda alla normalizzazione in terza
forma normale, preservando le dip. funzionali.
Soluzione 1.12.3. Ipotesi:
IP1 : per ogni corso si conosca il docente e il CdL di riferimento
IP2 : annoCdL indichi il particolare anno di ciascun CdL (1,2,3,4 o 5)
Ipotesi aggiuntive:
IP3 : ogni Corso si conosce lannoCdL e il semestre in cui `e erogato
IP4 : di ogni CdL si tiene conto degli num iscritti
IP5 : per ogni CdL in un dato annoCdL e semestre si conosce il numero di cfu tot semestre
IP6 : di ogni Corso si conosce lorario delle lezioni con giorno settimana e ora
Dipendenze funzionali:
DF1 : Docente codDocente -> nome, cognome
DF2 : Corso: codCorso -> nomeCorso, cfu, codDocente, codCdL, annoCdL, semestre
(IP1)(IP3)
DF3 : Corso di Laurea: codCdL -> nomeCdL, num iscritti CdL (IP4)
DF4 : CFU semestre CdL: codCdL, annoCdL, semestre -> cfu tot semestre (IP5)
DF5 : Orario: codCorso, giorno settimana -> ora (IP6)
La chiave `e costituita dagli attributi: (codCorso, giorno settimana)
Classificazione delle dipendenze funzionali:
Dipendenza funzionale piena: Orario
Dipendenza funzionale parziale: Corso
Dipendenza funzionale transitiva: Docente, Corso Di Laurea, CFU semestre CdL
d) (8pt) Quesiti teorici:
Illustrare le differenze presenti tra chiave/superchiave e chiave candidata/chiave primaria
Soluzione 1.12.4. Intuitivamente ogni entit`a di una base di dati deve essere identificata
univocamente tramite una chiave, un insieme di uno o pi`
u attributi che non possono avere
valori duplicati in pi`
u istanze dellentit`a/ tuple di una relazione.
Formalmente la definizione:
un insieme K di attributi `e superchiave di una relazione r se r non contiene due tuple
distinte t1 e t2 con t1 [K] = t2 [K]
K `e chiave di r se `e una superchiave minimale di r (non esiste unaltra superchiave K 0 di
r che sia K 0 K, contenuta in K come sottoinsieme proprio)
Descrivere, aiutandosi con un esempio, le anomalie da perdita di aggiornamento e lettura sporca
48
1.13
49
CORSO DI LAUREA IN ING. INFORMATICA, ELETTRONICA E TELECOMUNICAZIONI PROVA SCRITTA DI BASI DI DATI E SISTEMI INFORMATIVI E SISTEMI INFORMATIVI
a)
b) Si definiscano le relazioni (tabelle) risultanti in SQL, avendo cura di esplicitare i vincoli di integrit`
a.
` stata a
c) Si vuole realizzare un database relativo alle gestione di denunce effettuate da cittadini. E
tal fine costruita, da un inesperto progettista, ununica tabella descritta dai seguenti attributi:
(cfAttore, nomeAttore, cognomeAttore, cfRegista, nomeRegista, cognomeRegista,
nomeSerie, genereSerie, numeroStagione, annoProd, numTotEpisidi, numEpisodio,
titoloEpisodio, descEpisodio)
Nellipotesi che il ogni stagione sia diretta da un solo regista, e che in ogni episodio possano partecipare pi`
u attori, se ne determini la chiave e si individuino, esplicitandole, le dipendenze funzionali. Sulla
base di queste si proceda alla normalizzazione in 3a forma normale, preservando le dip. funzionali.
Soluzione 1.13.1. Ipotesi:
IP1 : ogni Stagione `e diretta da un solo Regista
IP2 : in un Episodio possono partecipare pi`
u Attori
Dipendenze funzionali:
DF1 :
DF2 :
DF3 :
DF4 :
DF5 :
51
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
11
15
34
35
39
45
Indice analitico
normalizzazione
decomposizione senza perdite, 21
prima forma normale, 36
seconda forma normale, 36
sistema transazionale
ripresa a caldo, 42
transazioni
anomalie
aggiornamento fantasma, 22, 47
inserimento fantasma, 22
lettura inconsistente, 22
lettura sporca, 22, 37, 47
perdita di aggiornamento, 22
atomicit`
a, 7
ben formate, 37
consistenza, 7
isolamento, 8
locking a 2 fasi, 36
serializzabilit`
a, 37
trigger, 7
52