0

Our professor has solved an example for us. They taught us it's incorrect to use a quantifier (exists or forall) with a variable that's already bound on the left side of the pipe (|, meaning "such that"). They've done that in their example solution. Can quantifiers be used on variables bound on the left side of the pipe in TRC?

Their question and solution:

R consists of three columns (a, b, and, c), and a is the primary key. Similarly, S consists of three columns (d, e, and, f), and d is the primary key.

Write the TRC query that is equivalent to the following Relational Algebra query: R ⟕ S [natural left outer join].

{r.*, s.* |
    // There are two tuples to join
    (r ∈ R ∧ s ∈ S ∧ r.a = s.d) ∨
    // or there is a tuple in R without a tuple in S
    (r ∈ R ∧ NOT (∃s ∈ S) (r.a = s.d))
    }

Is this correct?

I would've answered:

{r.*, s.* | 
    // There are two tuples to join
    (r ∈ R ∧ s ∈ S ∧ r.a = s.d) ∨
    // or there is a tuple in R without a tuple in S
    (r ∈ R ∧ (NOT (s ∈ S)) ∧ (r.a = s.d))
}
philipxy
  • 156
  • 1
  • 9

0 Answers0