Theta join dopo un join naturale

Theta join dopo un join naturale

di Edoardo Fortunato Gaetano Genchi -
Numero di risposte: 2
Supponiamo di avere una situazione del genere (non ha molto senso semantico)

studente
nome nazione
 anna italia 
marco spagna


docente
nome paese
anna spagna
luca italia


Nel caso scrivessi STUDENTE JOIN DOCENTE sarebbe un join naturale su "nome"

studente JOIN docente
nome nazione paese
anna italia spagna


Ma nel caso scrivessi STUDENTE JOIN nazione = paese DOCENTE, ci sarebbe sempre il join su "nome" (1), oppure non avviene il join su "nome", ma solo un prodotto cartesiano e salta direttamente al join su nazione = paese(2)? 

Caso 1 - join anche su "nome": nessuna ennupla restituita in quanto nessuna ennupla di studente ha una corrispondenza su "nome" e "nazione" con una ennupla di docente su "nome" e "paese".

Caso 2 - solo join su nazione = paese: c'è il problema delle intestazioni della tabella, che sono sintatticamente errate perché "nome" è duplicato.


STUDENTE JOIN nazione = paese DOCENTE
nome nome nazione=paese
anna luca italia
marco anna spagna

Suppongo non sia il caso 2, ma anche sul caso 1 ho parecchi dubbi; è possibile che sia semplicemente un'operazione illegale da svolgere?

In riposta a Edoardo Fortunato Gaetano Genchi

Ri: Theta join dopo un join naturale

di Lorenzo Lucarella -

Qualcuno mi corregga se sbaglio, ma se non ricordo male la semantica di un theta-join è questa:

A <theta-join +condizioni> B ==

<selezione +condizioni>(A <natural-join> B)

ovvero il theta join è solo un natural join con selezione applicata sul risultato.

Partendo da questo presupposto, verrebbe a verificarsi lo scenario 1, ovvero join naturale fra le due tabelle e poi selezione sul risultato (che in questo caso porta a tabella vuota).

Peraltro, nulla vieta che join e/o selezioni abbiano tabelle vuote come risultato.