Re: By The Dawn's Normal Light

From: Tony Douglas <tonyisyourpal_at_netscape.net>
Date: 22 Oct 2004 12:37:47 -0700
Message-ID: <bcb8c360.0410221137.7a6316f0_at_posting.google.com>


alfredo_at_ncs.es (Alfredo Novoa) wrote in message news:<4178eda8.92113375_at_news.wanadoo.es>...
> >But
> >from the point of view of the relational engine, a string is atomic:
> >there is no way for the relational operators to break it down into
> >smaller pieces.
>
> But the relational engine has access to the type operators
>
> select * from a where b like 'Z%';
>
> select * from x where a[1][2] = 5;
>

What do you mean here by "type operators" ? In this case I'm seeing two operators, 'like' which is defined over strings so is a string operator, and = which is presumably overloaded but here is operating on two integers. The essential fact about them is that they return boolean results. So, you could say

like :: [char] * [char] -> bool
= :: int * int -> bool  

In other words, nothing operating over types as values, which is how I think of "type operators".

> This is not true, the type operators are a fundamental part of the
> "relational engine"
>

I don't think so; what the relational engine needs is knowledge of the existence of a set of types, and a set of operators on those types that return boolean values, so that it can compute those functions over attributes in a join or restrict. It really doesn't need to know the internal representation of those types, since it shouldn't be guddling around inside them. The relational engine really only needs to know about booleans. Everything else can be derived (admittedly via frightening degrees of circumlocution, but it is possible).

> 1NF is superfluous, a relation is always in 1NF
>

That would seem to be the current definition.  

Cheers,

  • Tony
Received on Fri Oct 22 2004 - 21:37:47 CEST

Original text of this message