cerca
Basi di Dati: temi d'Esame
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Basi di Dati: temi d'Esame

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)