Re: Operationalize orthogonality

From: Tony D <tonyisyourpal_at_netscape.net>
Date: 4 Jun 2006 07:17:05 -0700
Message-ID: <1149430625.217195.299800_at_i39g2000cwa.googlegroups.com>


mAsterdam wrote:
> Tony D wrote:
> > The only type absolutely required is the boolean type. You could (and I
> > stress, *could*) attempt to model everything from there on up in terms
> > of relations and booleans, but that would require a frightening degree
> > of circumlocution.
>
> Yes. Let's not go that way.
>

Not for a system you'd actually want to use in reality, no.

>
> > Any real system would have to provide some basic types and operators on
> > those types, along with a method of generating your own types and
> > associated operators. (Internally, these types and operators might be
> > defined in terms of relations and booleans, but those details would be
> > carefully hidden under the covers.) The only requirement on those types
> > for use with relations and relational operators is that equality is
> > defined. (In PostgreSQL, there is an additional requirement that
> > ordering is defined if you want to use indexing on those types, so we
> > might have to put that down as a requirement too.)
>
> Is this rephrase ok with you?
>
> It is imperative for any practical solution (i.e. with indexing)
> that ordering operators (<, >) of a type can be communicated.
>

I think this needs to be handled on a type-by-type basis; some types may not be amenable to ordering (types that generate other types, say ?) Also, types that you may want to use in non-equi joins. At the end of the day, the restrict and join operators really don't care; they can hand off evaluation of the comparisons to operators you've defined, and as long as they return a boolean result that's fine. (Which might lead to the "!!!" up ahead ...)

>
> > However, there's a great big "!!!" sign on the road ahead; can you
> > guess what it is yet ?
>
> I am looking for them. Please share the one you see.

In my last paragraph, I used this phrase :

"they can hand off evaluation of the comparisons to operators you've defined, and as long as they return a boolean result that's fine."

Think about this a little further, with specific reference to complex, structure types (and RVAs especially). The relational model may offer a get-out clause, though.

  • Tony
Received on Sun Jun 04 2006 - 16:17:05 CEST

Original text of this message