Re: Operationalize orthogonality
Date: 4 Jun 2006 07:17:05 -0700
> 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.