The “left outer join” operation is an extension of the relational join operation. The basic idea is that all tuples in the left relation always appear in the “left outer join” result, irrespective of whether they join with any tuple in the right relation. For example, consider two relations R(A, B), and S(B, C). Assume that R has the following tuples: (1, 10), (1, 20), and S has the following tuples: (10, 75), (10, 85), (30, 95). R LeftOuterJoin S will have the following tuples: (1, 10, 75), (1, 10, 85), (1, 20, null). Note that the first two tuples are the result of a regular join operation between R and S. The third tuple (1, 20, null) is added to the left outer join result because the tuple (1, 20) in R (which is the left relation) does not join with any tuple in S; the S column values are set to null in this case.
Note that the left outer join operation is not symmetric because tuples in the right relation do not appear in the outer join result unless they join with a tuple in the left relation. In our example, the tuple (30, 95) in S (the right relation) does not appear in the left outer join result because it does not join with any tuple in R.
The RightOuterJoin is defined in a similar way except all tuples in S will show up in the final result when we apply R RightOuterJoin S. In addition, we also define the full outer join between two tables as :
R fullouterjoin S = (R Leftouterjoin S) ∪ (R Rightouterjoin S)
Given the above description of full outer join and assume T = R fullouterjoin S under an arbitrary join condition, answer the following questions.
Therefore, T = R fullouterjoin S = (R Leftouterjoin S) ∪ (R Rightouterjoin S)
- How can you recover the exact operands R and S from T? If yes, what is the function f? If not, why?
-> after searching online, i think the answer is that we can't. Can someone verify