Path: text.usenetserver.com!out04b.usenetserver.com!news.usenetserver.com!in02.usenetserver.com!news.usenetserver.com!postnews.google.com!j28g2000hsj.googlegroups.com!not-for-mail
From: Tegiri Nenashi <TegiriNenashi@gmail.com>
Newsgroups: comp.databases.theory
Subject: Re: header part of the value?
Date: Wed, 27 Feb 2008 19:14:25 -0800 (PST)
Organization: http://groups.google.com
Lines: 59
Message-ID: <ffca64d9-8d78-4ab8-8c70-26293eb5c119@j28g2000hsj.googlegroups.com>
References: <f0ff1aa3-b174-4f74-9ad4-ded4f9716424@s37g2000prg.googlegroups.com> 
 <5bf968b0-8dd9-4cb8-ad40-55534df3c32a@p25g2000hsf.googlegroups.com>
NNTP-Posting-Host: 70.137.163.127
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
X-Trace: posting.google.com 1204168465 11784 127.0.0.1 (28 Feb 2008 03:14:25 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Thu, 28 Feb 2008 03:14:25 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: j28g2000hsj.googlegroups.com; posting-host=70.137.163.127; 
 posting-account=PBsn8woAAADaWofLEAjNrE17YVrUmBlm
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET 
 CLR 1.1.4322; .NET CLR 2.0.50727),gzip(gfe),gzip(gfe)
Xref: usenetserver.com comp.databases.theory:170055
X-Received-Date: Wed, 27 Feb 2008 22:14:25 EST (text.usenetserver.com)

On Feb 27, 6:27=A0pm, Tegiri Nenashi <TegiriNena...@gmail.com> wrote:
> Marshall Spight wrote:
> > On Tue, Feb 26, 2008 at 10:44 AM, Tegiri Nenashi
> >> .... (The discussion motivated by constraint databases snipped)
> > Just as we could write:
>
> > =A0 x < 1 /\ y =3D a \/
> > =A0 x < 1 /\ y =3D b
>
> > could we not also write
>
> > =A0 x + 3 =3D y \/
> > =A0 x + 5 =3D y
>
> And also
> x + 3 < y \/
> x + 5 < y

The objection to having more than one attribute name in the header is
that how do we define the header resulting in join and union? In
classic case we just take a union of attribute names for join and
intersection for the union. We can generalize it to headers with
single attribute name and ineqaulity{"x>=3D","x<=3D","y>=3D",...}, but what
do we do for expressions like this "x+...=3Dy"?

Specifically, if we allow single attribute names with inequlity, the
first thing to notice is that we don't need equality anymore

The relation:

x=3D
---
1
5
8

is the same as

=3D<x  x<=3D
---  ---
1    1
5    5
8    8

If we join it with say

=3D<x
---
3

Then, first we calculate relation header. It is a union of the
headers: {"=3D<x",  "x<=3D"}, so the resulting relation retains the header
of the first operand. This means, that it would eventually reduce back
to classic relation with the header {"x=3D"}. Next, we calculate the
tuples in the result.  We take the first tuple from the first relation
1=3D<x && x<=3D1 and match it against 3=3D<x. The result is empty.
Contunuing on we match 5=3D<x && x<=3D5 against 3=3D<x, and the result 5=3D<=
x
&& x<=3D5 makes into the join relation, and so on.
