Swappa : Uni / Basi di Dati: temi d'Esame
Creative Commons License

Torna alla pagina di Basi di Dati


:: Basi di Dati: temi d'Esame

16 febbraio 2007

NAVE(Nome,IDArmatore, Lunghezza, NumPasseggeri, NumPiani, NumCFComandante)
ARMATORE(ID, Nome, Cognome)
COMANDANTE(CF, Nome, Cognome, DataNascita)

SQL

Determinare il numero di navi che possono ospitare pių di 2500 passeggeri comandate da un comandante nato prima del 20 agosto 1968

SELECT COUNT(DISTINCT Nome)
FROM Nave JOIN Comandante ON CFComandante=CF
WHERE DataNascita<= 20/08/1968 AND

NumPasseggeri>2500

Determinare l'ID, nome e cognome dell'armatore con il maggior numero di navi

SELECT A.ID, A.Nome, A.Cognome
FROM Armatore AS A JOIN Nave AS N ON CF=CFComandante
GROUP BY A.ID
HAVING COUNT(N.Nome) >= ALL

SELECT COUNT(Nome)
FROM Nave
GROUP BY IDArmatore

ALGEBRA

Determinare tutte le coppie IDArmatore-CFComandante che non sono mai stati in relazione (il comandante non ha mai prestato servizio su una nave dell'armatore)

Proietto tutte le coppie POSSIBILI

TUTTI:=πID,CF(ARMATORE X COMANDANTE)

Li rinomino

T:=ρIDArmatore, CFComandante <- ID,CF (TUTTI)

Ora proietto solo le reali coppie

R:=πIDArmatore, CFComandante(NAVE)

Tutti i possibili - i reali = quelli mai incontrati

RIS:= T - R

Determinare il CF dei comandanti che hanno comandato solo una nave in tutta la loro carriera

Proietto i comandanti e le loro navi

T:=πCFComandante, Nome(NAVE)

Ne faccio una copia

T2:=ρCFC,N <- CFComandante, Nome(T)

Trovo coloro che hanno comandato almeno 2 navi

NO:=πCFComandante, Nome(T |X|CFC=CFComandante ^ Nome <>N T2)

Tutti - quelli che hanno comandato almeno 2 navi (non č T-NO????)

RIS:=πCFComandante(TUTTI - NO)

(Printable View of http://www.swappa.it/wiki/Uni/TemaEsame16022007)