Sei sulla pagina 1di 3

Corso di Tecnologie Digitali [1] A.A.

2019-2020
Proff. Cappiello, Plebani, Salnitri, Vitali

POLITECNICO DI MILANO Esame 17 Giugno 2020


INGEGNERIA GESTIONALE

TEMA A
Concettuale

1- Vi è stata commissionata la progettazione della base di dati dell’aeroporto PoLinate.


PoLinate è composto da diverse piste, ciascuna identificata da un nome univoco e
caratterizzata da lunghezza e larghezza. Per ogni pista è necessario tenere traccia degli
utilizzi effettuati dagli aerei, tenendo traccia della data, dell’ora di inizio e di fine
occupazione, del tipo di utilizzo (decollo o atterraggio) e del riferimento all’aereo che sta
utilizzando la pista. Di ogni aereo si conosce il codice identificativo (univoco per marca), la
marca, il modello e la compagnia proprietaria del velivolo. Della compagnia aerea
proprietaria si conoscono il nome, univoco, in numero di telefono e l'indirizzo della sede
principale, che include nazione, città e via.

2- Estendere il modello creato finora considerando che si vuole tenere traccia del tipo di aereo
che occupa la pista. Infatti, è risaputo che esistono due tipi di aerei. Gli aerei cargo, di cui si
conosce la capacità di carico, e gli aerei passeggeri, di cui si conosce il numero di posti
disponibili. Si vuole anche aggiungere l'elenco degli hangar disponibili nell'aeroporto. Di
ciascuno si conosce il codice identificativo, la superficie e la capacità, espressa come numero
di aerei. Infine si vuole memorizzare l'elenco delle riparazioni effettuate. Ogni riparazione si
riferisce ad un aereo, viene effettuata in un hangar e si conoscono data e ora, la durata e il
costo totale.
Logico
Dato lo schema E-R in figura, definire il modello logico usando il modello relazionale e specificando
chiavi e vincoli di integrità referenziale.

Servizio (Codice, Descrizione)


Alloggio (Codice, Inidirizzo, Civico, CAP, Persone, Prezzo, CFHost)
Offerta (CodiceS, CodiceA, Quantità)
Utente (CF, Nome, Cognome, Tipo, PIVA*, Telefono*, Mail*)
Prenotazione (Codice, CFGuest, DataArrico, DataPartenza, CodiceA
Recensione (ID, Voto, Testo*, Approvato, CodP, CFGuest)

Offerta.CodiceS à Servizio.Codice
Offerta.CodiceA à Alloggio.Codice
Alloggio.CFHost à Utente.CF
Prenotazione.CFGuest à Utente.CF
Prenotazione.CodiceA à Alloggio.Codice
Recensione.(CodP, CFGuest) à Prenotazione.(Codice, CFGuest)

SQL
Si consideri il seguente schema di base di dati che vuole tenere traccia delle informazioni relative
alle lezioni a distanza tenute nel corrente anno scolastico in una scuola superiore di Milano.

PERSONA (CF(K), Nome, Cognome, Indirizzo, Città, Tel)


LEZIONE (IDLezione(K), IDProf, Anno, Sezione, Data, OraInizio, Materia, NumeroOre)
CLASSE (Anno(K), Sezione(K), NumeroStudenti)
PRESENZE (IDLezione(K), Studente(K))
dove gli attributi chiave sono indicati con il simbolo "(K)".

La Classe è contraddistinta dall’attributo Anno che è un attributo numerico contenente valori da 1


a 5 e dall’attributo Sezione che contiene una lettera, es. A, B, C.

a) Trovare il professore che nel mese di marzo 2020 ha tenuto più di 80 ore di lezione ma non
ha mai iniziato alle 9.00

SELECT IDProf
FROM Lezione
WHERE Data BETWEEN 01/03/2020 AND 31/03/2020
AND IDProf NOT IN (SELECT IDProf FROM Lezione WHERE OraInizio = “9:00”)
GROUP BY IDProf
HAVING SUM (NumeroOre) >80

b) Trovare la lezione a cui erano presenti più di 20 studenti provenienti da almeno due città
diverse

SELECT IDLezione
FROM Presenze JOIN Persona ON Presenze.Studente = Persona.CF
GROUP BY IDLezione
HAVING Count(*) >20 AND Count(DISTINCT Città) >=2

c) Trovare, per ogni materia, il professore che ha insegnato più ore


CREATE VIEW OreTotali (Prof, Mat, Ore) AS
SELECT IDProf, Materia, SUM(NumeroOre)
FROM Lezione
GROUP BY IDProf, Materia

SELECT Mat, Prof


FROM OreTotali AS O1
WHERE Ore = (SELECT MAX (Ore) FROM OreTotali AS O2 WHERE O2.Mat=O1.Mat)

Potrebbero piacerti anche