Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2019-2020
Proff. Cappiello, Plebani, Salnitri, Vitali
Concettuale
1. Vi è stata commissionata la progettazione della base di dati delle spiagge di una nota località
balneare. Di ogni spiaggia, caratterizzata dal nome, si conoscono il numero di telefono e
l'indirizzo, composto da via e numero civico. Le spiagge possono essere pubbliche o private:
delle spiagge pubbliche si conosce la superficie in metri quadrati, mentre delle spiagge
private si conosce il numero di slot con ombrellone assegnabili. Per poter accedere alle
spiagge private è necessaria una prenotazione. Le prenotazioni sono giornaliere e per
ognuna di esse bisogna tenere traccia del cliente che la effettua, della data e della spiaggia
ipotizzando che lo stesso cliente può prenotare più spiagge lo stesso giorno. Del cliente sono
inoltre richiesti nome, cognome e telefono (ma non il codice fiscale).
Superficie
NumSlot
PUBBLICA PRIVATA
(t,e) (1,1) (1,1) (1,n)
Presso Effettua
(1,n)
ID
Data
Nome
Telefono SPIAGGIA
Nome
Indirizzo PRENOTAZIONE CLIENTE Cognome
Telefono
Via NumeroCivico
Lavora Eroga
(1,1) Nome
(1,n)
CF Nome MinPartecipanti
BAGNINO Cognome ATTIVITA’ MaxPartecipanti
DataRinnovoBrevetto
(1,n) Telefono
(t,e)
PrezzoPersona
GRATIS PAGAMENTO
Logico
Dato lo schema E-R in figura, definire il modello logico usando il modello relazionale e specificando
chiavi e vincoli di integrità referenziale.
Superficie
NumSlot
PUBBLICA PRIVATA
(t,e) (1,1) (1,1) (1,n)
Presso Effettua
(1,n)
Data ID
Nome Telefono
SPIAGGIA
Indirizzo (0,n) Nome
NumeroCivico (1,n) PRENOTAZIONE CLIENTE Cognome
Via Telefono
Lavora Eroga
(1,1) Nome
(1,n)
CF Nome MinPartecipanti
BAGNINO Cognome ATTIVITA’ MaxPartecipanti
DataRinnovoBrevetto
(1,n) Telefono
(t,e)
PrezzoPersona
GRATIS PAGAMENTO
(K) Indica gli attributi che compongono la chiave primaria di una relazione.
1) Trovare le camere da due letti che, a partire da giugno 2020, sono state prenotate almeno una
volta da un cliente straniero, ma non sono mai state prenotate per più di un giorno (per singola
prenotazione).
SELECT *
FROM Camera AS C
WHERE C.Letti = 2 AND Numero IN (
SELECT P.NumeroCamera
FROM Prenotazione AS P JOIN Cliente AS C ON P.CFCliente = C.CF
WHERE P.DataArrivo >= 1/6/2020 AND C.Nazione != “Italia”)
AND Numero NOT IN (
SELECT NumeroCamera
FROM Prenotazione
WHERE DataArrivo >= 1/6/2020 AND NumeroNotti > 1
)
2) Trovare tutti i clienti che, a partire dal 2019, hanno effettuato prenotazioni per un costo totale
di almeno 2000€ o che si sono fermati nell’hotel per almeno 60 giorni.
SELECT *
FROM Cliente
WHERE CF IN (SELECT P.CFCliente
FROM Prenotazione AS P JOIN Camera AS C ON P.NumeroCamera = C.Numero
WHERE P.DataArrivo >= 1/1/2019
GROUP BY P.CFCliente
HAVING SUM (P.NumeroNotti * C.PrezzoPerNotte) >= 2000 OR SUM (P.NumeroNotti) >=
60)
3) Trovare, per ogni camera, il cliente straniero che vi ha soggiornato più a lungo (anche in periodi
diversi).
SELECT *
FROM ClientiCamera AS V1
WHERE V1.TotaleNotti = (
SELECT MAX(V2.TotaleNotti)
FROM ClientiCamera AS V2
WHERE V1.NumeroCamera = V2.NumeroCamera
)