Soluzione esercizi appelli Clicca QUI per vedere il messaggio nel forum |
bog86 |
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!
|
CaboM.BNA |
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... |
bog86 |
Ma quindi il secondo come potrei risolverlo? non mi sembra ci sia modo di capire quante ore dura una lezione |
CaboM.BNA |
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
;
|
|
|
|