Re: choice of character for relational division

From: Bob Badour <bbadour_at_pei.sympatico.ca>
Date: Sun, 01 Apr 2007 14:28:35 GMT
Message-ID: <nkPPh.18075$PV3.187215_at_ursa-nb00s0.nbnet.nb.ca>


Marshall wrote:

> On Mar 31, 2:47 pm, Bob Badour <bbad..._at_pei.sympatico.ca> wrote:
>

>>One needs to have set equality and set containment operators. If one has
>>those, the query seems simple. What does a special operator for it buy one?

>
> Do we need all of those? We need set equality for RVAs if we
> want to join on RVAs (which we do) but do we need a top level
> equality? I mean, I would expect it, but do we need it? Do we
> ever ask in logic whether these propositions are the same as
> those propositions? Doesn't seem so.

But we do ask whether one set is equal to another set. Are you constructing a calculus or an algebra?

> If we have equality (=) and join (&), we don't need containment:
>
> A & B = A <=> A ⊆ B.

Are you constructing an internal language or an external language. I agree it is unecessary internally, but I know from past experience that users are drawn to use containment when it is available to them. (At least, english speaking users are.)

ie. SQL users internalize the IN keyword long before they comprehend the EXISTS, ANY and ALL keywords.

Then again, perhaps it is better from a pedagogic standpoint to remove that crutch.

>>>>If "product" has a completely
>>>>different name "join", why should a "divide" use the same name?
>>
>>>A fair question. The inverse of union is called "set subtraction"
>>>rather than just "subtraction." Maybe call it "inverse join?"
>>>"Unjoin?" "Relational division?"
>>
>>Can you describe the full operation? Maybe show an inverse for a join
>>that is not a cartesian product?

>
> SuppliesParts
> S P
> 7 1
> 7 2
> 8 1
>
>
> Parts
> P Desc
> 1 that little thing with the knob
> 2 the other thing we used the other day
>
> Using $ for relational division
>
> SuppliesParts $ Parts = {(S=7)}

>
> This implies the existence of a relational remainder, in this case
> {(S=8, P=1)}

If we define
SDP = Supplies $ Parts
then Supplies = SDP X Parts
granted the X is also join because SDP and Parts have no common attributes.

Hmmmm....

> Also:
>
> ItsLateAndICantThinkOfAnExample
> A B
> 1 1
> 1 2
> 1 3
> 2 11
>
>
> ItsLateAndICantThinkOfAnExample $ (Total = sum(B)) =
> {(A=1, Total=6), (A=2, Total=11)}

Consider:

ItsEarlyAndICan
A B C
1 1 b
1 2 a
1 3 c
2 11 d

What does "ItsEarlyAndICan $ (Total = sum(B))" evaluate to? Received on Sun Apr 01 2007 - 16:28:35 CEST

Original text of this message