Esercizio seconda prova di verifica

Rispondi
Avatar utente
InformateciBot
Messaggi: 314
Iscritto il: 30/09/2018, 16:33

Nell'esercizio 2 del secondo compitino chiede di dire se il risultato (dato un albero logico) è senza duplicati. Premetto che non ho seguito il corso, qualcuno sa dirmi se ci sono spiegazioni su questa tipologia di esercizi sulle slide? O in alternativa un modo per svolgerlo?
La prova è questa: [url=http://www.di.unipi.it/~albano/corsi/BDProveVerifica/2014/SecondaSoluzione.pdf] compitino[/url]
esercizio 2, punto a. La questione è: c'è un metodo di svolgimento generale? (al di là della soluzione a questo esercizio)

diningphil
La proiezione in quell'albero ammette duplicati, e inoltre, dato che raggruppi su chiave primaria IdCorso e NomeCorso, sei sicuro che avrai come risultato della group-by solo ennuple con coppie (IdCorso,NomeCorso) distinte. Se però proietti solo su NomeCorso, che oltretutto non è chiave e può comparire più volte con lo stesso valore nelle ennuple, direi che può avere duplicati. Questo te lo dico conoscendo l'algebra e il suo significato.

Se vuoi parlare di dipendenze funzionali, come nella soluzione, il prof ha detto che per vedere se una distinct è inutile o no quando è presente una groupby (qualcuno mi corregga se sbaglio), bisogna controllare che gli attributi della Select determinino quelli della groupby. Se così non è, allora è possibile che accada ciò che ho scritto sopra. Se vuoi convincertene, sfrutta la definizione di Dipendenza Funzionale e Applicala a NomeCorso --> IdCorso, NomeCorso e vedi che effettivamente non ci sarebbero duplicati se valesse.

Francesco Pieraccini
Allora, la prima parte del tuo discorso mi torna: senza la group-by avrei detto anche io che la distinct sarebbe stata necessaria.
La seconda parte è esattamente ciò che volevo sapere :D

Quindi grazie!
Rispondi

Torna a “[BD] Basi di dati”