dato il seguente schema relazionale:
PROFESSORI(pId,Cognome, Nome)
CORSI(cId,Denominazione, Professore)
STUDENTI(Matricola, Cognome, Nome)
ESAMI(Studente, Corso, Data, Voto)
ho svolto la seguente query:
Trovare i professori che tengono due corsi (e non di più), indicando nome cognome del professore e denominazione dei due corsi.
Algebra Relazionale:
$ CORSIPROF: Pi _("cId, Professore") (CORSI) $
$ CORSIPROF2: rho_("cId2, prof2" larr "cId, Professore") ( CORSIPROF) $
$ CORSIPROF3: rho_("cId3, prof3" larr "cId, Professore") ( CORSIPROF) $
$ PIUDIUNCORSO: Pi _("cId, Professore") ( "CORSIPROF JOIN"_("Professore=prof2" ^^^ cId != cId2) "CORSIPROF2" ) $
$ PIUDIDUECORSI: Pi _("cId, Professore") ( sigma_("Professore=prof3" ^^^ cId != cId3) ( "CORSIPROF JOIN"_("Professore=prof2" ^^^ cId != cId2) "CORSIPROF2 JOIN "_("prof2=prof3" ^^^ cId2 != cId3) "CORSIPROF3" ) ) $
$ DUECORSI: PIUDIUNCORSO - PIUDIDUECORSI $
$ CORSI2: rho_("cId2" larr "cId") ( CORSI) $
$ RISULTATOFINALE: Pi _("Nome, Cognome, Denominazione") ( ( "DUECORSI JOIN"_ (cId = cId2) "CORSI2" ) JOIN_("Professore=pId") PROFESSORI ) $
Calcolo Relazione su Tuple
$ {"P.Nome, P.Cognome, C1.Denom, C2.Denom | Professore(P)" ^^^ not(EEC1,C2,C3)"(Corsi(C1)" ^^^ "Corsi(C2)" $
$ ^^^ "Corsi(C3)" ^^^ "C1.Professore = P.pId" ^^^ "C2.Professore = P.pId" $
$ ^^^ "C3.Professore = P.pId" ^^^ ( ("C1.cId" != "C2.cId" ^^^ "C1.cId" != "C3.cId" $
$ ^^^ "C2.cId" != "C3.cId") vvv ("C1.cId = C2.cId" ^^^ "C2.cId = C3.cId" ) ) ) } $
Quanto è sbagliata?
odio bdd
Corsi di Laurea
ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.
Accetto l'uso dei cookie