Re: Principle of Orthogonal Design

From: Marshall <marshall.spight_at_gmail.com>
Date: Wed, 6 Feb 2008 09:45:02 -0800 (PST)
Message-ID: <108e169d-a906-4818-a83f-42c1e11a85d1_at_1g2000hsl.googlegroups.com>


On Feb 5, 1:54 pm, Jan Hidders <hidd..._at_gmail.com> wrote:
> On 5 feb, 22:06, Marshall <marshall.spi..._at_gmail.com> wrote:
>
> > However, suppose we have a binary predicate P over
> > domain X and we want to assert it is reflexive? In predicate
> > logic we can use the same name twice and express this
> > very conveniently:
>
> > Ax in X: P(x,x)
>
> > How would we do this if P's attributes were already bound
> > to the names "x" and "y"?
>
> Roughly the same, except you indicate the role in the predicate with
> the attribute names. So assume that attribute names are 'a' and 'b':
>
> Ax in X: P(a=x,b=x)

I see. Okay, this is a very small change indeed. Basically we are just specifying attributes using the same syntax as is used in named-argument function invocation, in languages that support that feature. This still relies on using the quantifiers to introduce new names. And the attribute names of different relations are always insulated from each other: a relation may be in the scope of a quantifier, but it is never in the scope of another relation.

This seems like it will work as a logical language (where the results are always boolean) but I don't see how it could work in a query language, because it doesn't specify/unify the attribute names of the result relation.

An example:

Suppose we have
  P(a, b)
  Q(a, b)
as subsets of X*X

and we want to join P and Q on P.b = Q.a.

Ax in X: Ey in X: Ez in X: P(a=y, b=x) & Q(a=x, b=z)

I guess I should go read about the tuple relational calculus and see what it does...

Marshall Received on Wed Feb 06 2008 - 18:45:02 CET

Original text of this message