Sei sulla pagina 1di 5

Corso di Tecnologie Digitali [1] A.A.

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

POLITECNICO DI MILANO Esame 07 Luglio 2020


INGEGNERIA GESTIONALE

Concettuale

1. Vi è stata commissionata la progettazione della base di dati del centro stampa PoliPrint.
PoliPrint possiede diverse macchine da stampa, ciascuna identificata da un codice
identificativo univoco per marca, e caratterizzata da modello, dai formati carta supportati, e
dalla velocità di stampa. Quando viene ricevuto un ordine, PoliPrint lo memorizza. In
particolare, ogni ordine è identificato da un codice univoco, dalla data di richiesta, e dalle
operazioni di stampa da eseguire. Ogni operazione è caratterizzata da un numero univoco
per ordine, da una descrizione, dal numero di pagine da stampare, dal costo e dalla macchina
utilizzata. La base di dati deve inoltre tenere traccia di quali ordini sono stati effettuati da
studenti del Politecnico e quali da docenti. Entrambi sono identificati dal proprio codice
persona e caratterizzato da nome e cognome. Per gli studenti è necessario tenere traccia
dell'indirizzo (composto da via, civico, CAP e città) e del recapito telefonico, mentre per i
docenti si registrano il dipartimento di appartenenza e il codice del fondo con cui viene
pagato l'ordine.

NumPag
Codice Costo Descr Num Codice
Modello Data

Formato
MACCHINA (0,n) (1,1) Relativo (1,N)
(1,n) ORDINE
STAMPA
esegue OPERAZIONE a
(1,1)
Velocità
(1,1)

effettua

(0,N)
Cod Persona
Nome
UTENTE Cognome

(t,e)

Telefono Dip
STUDENTE DOCENTE Fondo
Indirizzo
Citta
Via

CAP

2. Estendere il modello creato finora in modo da registrare i consumabili utilizzati dalle


macchine di stampa. Ogni consumabile è caratterizzato da un codice univoco, dalla marca,
dalla data di acquisto, e dal costo. Infine, si vogliono memorizzare proprietà specifiche di
alcune macchine da stampa: per le stampanti a colori si vuole tenere traccia del numero di
inchiostri utilizzati, mentre per i plotter della presenza o meno della taglierina. Per i plotter,
inoltre, si vuole tracciare l'insieme di speciali consumabili, detti consumabili per plotter
(caratterizzati dai mq stampabili), utilizzati appunto solo dai plotter.
NumPag
Codice Costo Descr Num Codice
Modello Data

Formato
MACCHINA (0,n) (1,1) Relativo (1,N)
(1,n) ORDINE
esegue OPERAZIONE
STAMPA (1,1) a
Velocità
(0,n)
(1,1)
Num Inchiostri (t,o)
Taglierina Codice
Data
effettua
COLORI PLOTTER (0,1) CONSUMA Costo
usa Marca (0,N)
BILE
(0,n)
Data Cod Persona
Nome
UTENTE Cognome

(0,1) CONSUMA mq
usa BILE (t,e)
PLOTTER
Telefono Dip
STUDENTE DOCENTE Fondo
Indirizzo

Citta
Via

CAP
Logico

Dato lo schema E-R in figura, definire il modello logico usando il modello relazionale e specificando
chiavi e vincoli di integrità referenziale.

Cliente(IDCliente, Email, Nome, Cognome, FAX*)


PuntoVendita(Codice, Indirizzo)
Ordine(CodiceOrdine, Data, Totale, Cliente, PuntoVendita)
Fattura(CodiceOrdine, DataFattura, Ammontare, Saldata)
Mobile(Nome, Colore, Altezza, Larghezza, Profondità)
Comprende(CodiceOrdine, Nome, Colore, Quantità)
Dipendente(CF, Livello, Stipendio, PuntoVendita, Sostituisce*)

Ordine.Cliente -> Cliente.IDCliente


Ordine.PuntoVendita -> PuntoVendita.Codice
Fattura.CodiceOrdine-> Ordine.CodiceOrdine
Comprende.CodiceOrdine-> Ordine.Codice
Comprende.(Nome, Colore) -> Mobile.(Nome, Colore)
Dipendente.PuntoVendita -> PuntoVendita.Codice
Dipendente.Sostituisce -> Dipendente.CF
SQL
Si consideri il seguente schema di base di dati che vuole tenere traccia delle riparazioni effettuate
sugli aerei negli hangar di un aeroporto.

Aereo(Codice(K), Marca, Modello, NomeCompagnia)


Compagnia(Nome(K), Telefono, Via, Citta, Nazione)
Hangar (Codice(K), Superficie, CapacitaAerei)
Riparazione (Data(K), Ora(K), CodiceAereo(K), Durata, Costo, CodiceHangar)

Aereo.NomeCompagnia -> Compagnia.Nome


Riparazione.CodiceHangar -> Hangar.Codice
Riparazione.CodiceAereo -> Aereo.Codice

Si assuma che per ogni riparazione la durata sia espressa in minuti. Si assuma che la superficie
degli hangar sia espressa in mq.
(K) Indica gli attributi che compongono la chiave primaria di una relazione.

a) Trovare gli hangar con una superficie di almeno 750mq, una capacità di massimo 3 aerei e
in cui non sono mai state effettuate riparazioni più lunghe di 1 ora.

SELECT *
FROM Hangar
WHERE Superficie >= 750
AND CapacitaAerei <= 3
AND Codice NOT IN(
SELECT CodiceHangar
FROM Riparazione
WHERE Durata > 60
)

b) Trovare tutte le nazioni delle compagnie aeree che, nel mese di giugno 2020, hanno effettuato
riparazioni per un costo totale di almeno 1,000,000 o che siano durate in totale più di 10 ore.

SELECT DISTINCT c.Nazione


FROM (Compagnia as c JOIN Aereo as a ON c.Nome = a.NomeCompagnia)
JOIN Riparazione as r ON a.Codice = r.CodiceAereo
WHERE r.Data BETWEEN "01/06/2020" AND "30/06/2020"
GROUP BY c.Nome, c.Nazione
HAVING SUM(r.Costo) >= 1000000 OR SUM(r.Durata) > 600
b) Trovare, per ogni compagnia, il modello di aereo su cui la compagnia ha speso di più in
riparazioni.

CREATE VIEW RiparazioniModello(Compagnia, Modello, CostoTot) AS


SELECT a.NomeCompagnia, a.Modello, SUM(r.Costo)
FROM Aereo as a JOIN Riparazione as r ON a.Codice = r.CodiceAereo
GROUP BY a.NomeCompagnia, a.Modello;

SELECT *
FROM RiparazioniModello as r1
WHERE r1.CostoTot = (
SELECT MAX(r2.CostoTot)
FROM RiparazioniModello as r2
WHERE r2.Compagnia = r1.Compagnia
);