Pagina 1 di 1

Algebra relazionale: dubbi tra join e intersezione (esame)

Inviato: mar 10 feb 2009, 19:13
da sberla54
Ciao a tutti.
Scusate se insisto con le domande da newbie di SQL ma in questo ultimo periodo ho preparato l'esame di basi di dati da non frequentanti e non saprei bene dove altro chiedere aiuto...
So che l'algebra relazionale non e' SQL ma ma sono convinto che molti di voi l'abbiano studiata, come sto facendo io.

Oggi ho fatto l'esame e sto avendo dei dubbi sull'unica interrogazione in algebra relazionale presente nel compito.

Il testo dell'esercizio e' questo:
Immagine

La soluzione proposta dal professore e' la seguente (la scrivo come meglio posso)...

Codice: Seleziona tutto

PI_persona (Interpretazione JOIN (PI_corso (SIGMA_(persona='45'))))
Io, invece, ho usato l'intersezione al posto del JOIN....

Codice: Seleziona tutto

PI_persona (Interpretazione INTERSEZIONE (PI_corso (SIGMA_(persona='45'))))
puo' essere corretto?
Non so bene perche' ho messo l'intersezione...mi sembrava che il JOIN non andasse bene, anche se e' ovvio che va benissimo...

L'intersezione dovrebbe dare un risultato identico al JOIN no?
Si fa l'intersezione fra la tabella Interpretazione completa ed una tabella ridotta composta dalla riga (o dalle righe) della tabella Interpretazione che riguardano la persona con ID = 45.
Il risultato sara' una tabella che conterra' tutte le righe che hanno come attributo (o attributi) Corso quello (o quelli) estratto/i dall'interrogazione di destra, ovvero quello/i che frequenta la persona con ID 45.

No?
O non ho capito bene il funzionamento dell'intersezione?

Inoltre, un'ultima cosa, le parentesi influiscono sull'interrogazione?
Perche' ho il dubbio di averla scritta cosi':

Codice: Seleziona tutto

PI_persona (Interpretazione) INTERSEZIONE PI_corso (SIGMA_(persona='45')
non so bene perche'...

Qualcuno mi sa dare un parere definitivo?
Non so come mettermi il cuore in pace ed i risultati escono solo tra 10 giorni...e quell'interrogazione e' fondamentale ai fini del voto...

Grazie! :)

Re: Algebra relazionale: dubbi tra join e intersezione (esame)

Inviato: ven 27 feb 2009, 13:49
da FireEater
L'intersezione da come risultato una tabella contenente le righe comuni tra le 2 tabelle intersecate.

Credo che la tua soluzione sia corretta.

Solo una cosa non mi torna, quando facevo i join in algebra relazionale mettevo la condizione/i di join sotto la farfallina, mentre il tuo prof scrive tutto come se si trattasse di una intersezione :-k

La soluzione con le parentesi incasinate è concettualmente sbagliata perchè cerca di intersecare 2 tabelle che non proiettano campi in comune, ad ogni modo in qualsiasi DBMS funzionerebbe una sua eventuale traduzione in SQL. Quindi non so come potrebbe valutarla.

Ma alla fine come è andata?

PS: hai dimenticato di specificare la seconda tabella (sempre ISCRIZIONE), ma poi perchè scrivi INTERPRETAZIONE?

PPS: spero di non aver confuso caxxi per palazzi.. :lol:

Re: Algebra relazionale: dubbi tra join e intersezione (esame)

Inviato: sab 28 feb 2009, 17:02
da sberla54
Grande che m'hai risposto...non ci speravo piu' :)

Io m'ero convinto che fosse sbagliata...pensavo che non prendesse le righe intere in comune ma soltanto le colonne degli attributi in comune...e quindi non sarebbe stato corretto.

Alla fine, comunque, sono passato con un voto anche abbastanza decente, quindi credo che debba averla valutata positivamente la query :)

La condizione sotto la farfallina e' il thetha join, e si puo' utilizzare quando gli attributi hanno nomi diversi, per indicare tramite quali colonne di attributi bisogna joinare le tabelle....nel caso di questo esercizio gli attributi avevano lo stesso nome in entrambe le tabelle, quindi si poteva usare il join naturale, senza specificare niente.
PS: hai dimenticato di specificare la seconda tabella (sempre ISCRIZIONE), ma poi perchè scrivi INTERPRETAZIONE?
Mi sa che e' stato un lapsus :)
Nel compito ho scritto giusto :)

Grazie ancora!

Re: Algebra relazionale: dubbi tra join e intersezione (esame)

Inviato: gio 5 mar 2009, 19:39
da FireEater
sberla54 ha scritto:
La condizione sotto la farfallina e' il thetha join, e si puo' utilizzare quando gli attributi hanno nomi diversi, per indicare tramite quali colonne di attributi bisogna joinare le tabelle....nel caso di questo esercizio gli attributi avevano lo stesso nome in entrambe le tabelle, quindi si poteva usare il join naturale, senza specificare niente.
Ah... ecco! In pratica ho sempre usato solo i thetha join e poi sono un po' arrugginito, i database non mi hanno mai appassionato.

Ciao