.dsy:it.
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Basi di dati ~ informatica triennale (http://www.dsy.it/forum/forumdisplay.php?forumid=211)
-- Soluzione esercizi appelli (http://www.dsy.it/forum/showthread.php?threadid=33803)


Posted by bog86 on 13-02-2008 12:36:

Soluzione esercizi appelli

Esercizio 1. Si consideri lo schema relazionale seguente, relativo ad una base di dati di gestione corsi (le chiavi primarie delle relazioni sono sottolineate):
CORSO((NomeC,Sezione,) Professore)
ORARIO((NomeC,Sezione,Ora,Giorno))
DISPONIBILITA'((Professore,Giorno,Ora))

Si richiede di formulare in SQL quanto segue:
• trovare i professori che sono disponibili in almeno due giorni diversi.
SELECT professore
FROM disponibilità AS disp
WHERE giorno <> ALL (SELECT giorno FROM disponibilità WHERE disp.professore = disponibilità.professore) ;

• trovare per ogni corso il numero complessivo di ore in cui si tiene.
SELECT nomeC, COUNT(ora) AS NumOre
FROM orario
GROUP BY NomeC

Posson esser corretti? nn fidatevi troppo xchè sn parecchio indietro cn lo studio d basi....
Le chiavi primarie sn fra le parentesi interne!


Posted by CaboM.BNA on 13-02-2008 14:23:

potresti "RI"sottolineare le chiavi primarie?

cmq la prima non so, ma la secono mi pare sbagliata, poiché ti restituisce il conteggio su Ora del numero di tuple...
[sarebbe corretta se tutte le disponibilita fossero solamente della durata di 1h; poiché avresti n° tuple del ricevimento = n° ore del ricevimento]

P.S. le chiavi esterne suppongo siano quelle che hanno i nomi in comune...


Posted by bog86 on 13-02-2008 15:13:

Ma quindi il secondo come potrei risolverlo? non mi sembra ci sia modo di capire quante ore dura una lezione


Posted by CaboM.BNA on 13-02-2008 18:16:

ritratto quando detto precedentemente.

Probabilmente per ora ci si riferisce ad un orario.
L'oraio è inteso della durata di un ora: percio per un corso che dura ad es due ore, vi staranno DUE tuple (con STESSO NomeC,Sezione,Giorno) nella tabella.

in questo caso la tua query è corretta. [raggruppango per corso e contando le tuple, ottengo il numero complessivo di ore di quel corso).

per la prima query invece ti proporrei:

code:
SELECT Professore FROM DISPONIBILITA' GROUP BY Professore HAVING COUNT(Giorno) >= 2 ;


All times are GMT. The time now is 05:05.
Show all 4 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.