Uni.TemaEsame16022007 History
Hide minor edits - Show changes to output
January 14, 2008, at 06:55 PM
by
- Changed lines 47-49 from:
%soluzione%T:=ρ'_IDArmatore, CFComandante <- ID,CF (TUTTI)
to:
%soluzione%T:=ρ'_IDArmatore, CFComandante <- ID,CF_' (TUTTI)
January 14, 2008, at 06:54 PM
by
- Changed lines 71-74 from:
%soluzione%T2:=ρ'_CFC,N_'(T)
to:
%soluzione%T2:=ρ'_CFC,N <- CFComandante, Nome_'(T)
January 14, 2008, at 06:53 PM
by
- Changed line 84 from:
%soluzione%RIS:='_CFComandante_'(TUTTI - NO)
to:
%soluzione%RIS:=π'_CFComandante_'(TUTTI - NO)
January 14, 2008, at 06:53 PM
by
- Added lines 1-84:
(:Title Basi di Dati temi d'esame:)\\
%center bgcolor=#fff0f5 border='1px solid #cccccc' font-size=12pt padding=3px define=soluzione%
[[Torna alla pagina di Basi di Dati->Basi di Dati]]
----
%center%%bgcolor=#d9e4f2 font-size=11pt padding=4px padding-left=50px padding-right=50px% 16 febbraio 2007
'''NAVE({+Nome,IDArmatore+}, Lunghezza, NumPasseggeri, NumPiani, NumCFComandante)'''\\
'''ARMATORE({+ID+}, Nome, Cognome)'''\\
'''COMANDANTE({+CF+}, Nome, Cognome, DataNascita)'''
!!!%blue%SQL
!!%red%Determinare il numero di navi che possono ospitare pił di 2500 passeggeri comandate da un comandante nato prima del 20 agosto 1968%black%\\
SELECT COUNT(DISTINCT Nome)\\
FROM Nave JOIN Comandante ON CFComandante=CF\\
WHERE DataNascita<= 20/08/1968 AND
->NumPasseggeri>2500
!!%red%Determinare l'ID, nome e cognome dell'armatore con il maggior numero di navi%black%\\
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
!!!%blue%ALGEBRA
!!%red%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)%black%\\
''Proietto tutte le coppie POSSIBILI ''
%soluzione%TUTTI:=π'_ID,CF_'(ARMATORE X COMANDANTE)
''Li rinomino''
%soluzione%T:=ρ'_IDArmatore, CFComandante <- ID,CF (TUTTI)
''Ora proietto solo le reali coppie''
%soluzione%R:=π'_IDArmatore, CFComandante_'(NAVE)
''Tutti i possibili - i reali = quelli mai incontrati''
%soluzione%RIS:= T - R
!!%red%Determinare il CF dei comandanti che hanno comandato solo una nave in tutta la loro carriera%black%\\
''Proietto i comandanti e le loro navi''
%soluzione%T:=π'_CFComandante, Nome_'(NAVE)
''Ne faccio una copia''
%soluzione%T2:=ρ'_CFC,N_'(T)
''Trovo coloro che hanno comandato almeno 2 navi''
%soluzione%NO:=π'_CFComandante, Nome_'(T |X|'_CFC=CFComandante ^ Nome <>N_' T2)
''Tutti - quelli che hanno comandato almeno 2 navi''
%soluzione%RIS:='_CFComandante_'(TUTTI - NO)
%center bgcolor=#fff0f5 border='1px solid #cccccc' font-size=12pt padding=3px define=soluzione%
[[Torna alla pagina di Basi di Dati->Basi di Dati]]
----
%center%%bgcolor=#d9e4f2 font-size=11pt padding=4px padding-left=50px padding-right=50px% 16 febbraio 2007
'''NAVE({+Nome,IDArmatore+}, Lunghezza, NumPasseggeri, NumPiani, NumCFComandante)'''\\
'''ARMATORE({+ID+}, Nome, Cognome)'''\\
'''COMANDANTE({+CF+}, Nome, Cognome, DataNascita)'''
!!!%blue%SQL
!!%red%Determinare il numero di navi che possono ospitare pił di 2500 passeggeri comandate da un comandante nato prima del 20 agosto 1968%black%\\
SELECT COUNT(DISTINCT Nome)\\
FROM Nave JOIN Comandante ON CFComandante=CF\\
WHERE DataNascita<= 20/08/1968 AND
->NumPasseggeri>2500
!!%red%Determinare l'ID, nome e cognome dell'armatore con il maggior numero di navi%black%\\
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
!!!%blue%ALGEBRA
!!%red%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)%black%\\
''Proietto tutte le coppie POSSIBILI ''
%soluzione%TUTTI:=π'_ID,CF_'(ARMATORE X COMANDANTE)
''Li rinomino''
%soluzione%T:=ρ'_IDArmatore, CFComandante <- ID,CF (TUTTI)
''Ora proietto solo le reali coppie''
%soluzione%R:=π'_IDArmatore, CFComandante_'(NAVE)
''Tutti i possibili - i reali = quelli mai incontrati''
%soluzione%RIS:= T - R
!!%red%Determinare il CF dei comandanti che hanno comandato solo una nave in tutta la loro carriera%black%\\
''Proietto i comandanti e le loro navi''
%soluzione%T:=π'_CFComandante, Nome_'(NAVE)
''Ne faccio una copia''
%soluzione%T2:=ρ'_CFC,N_'(T)
''Trovo coloro che hanno comandato almeno 2 navi''
%soluzione%NO:=π'_CFComandante, Nome_'(T |X|'_CFC=CFComandante ^ Nome <>N_' T2)
''Tutti - quelli che hanno comandato almeno 2 navi''
%soluzione%RIS:='_CFComandante_'(TUTTI - NO)