Re: Dawn doesn't like 1NF

From: Marshall Spight <mspight_at_dnai.com>
Date: Tue, 19 Oct 2004 05:54:30 GMT
Message-ID: <q_1dd.274592$D%.51764_at_attbi_s51>


"Paul" <paul_at_test.com> wrote in message news:4173fd79$0$47981$ed2e19e4_at_ptn-nntp-reader04.plus.net...
> Marshall Spight wrote:
> > Let us propose that the relational engine is the servant of the type
> > system.

> [big snip...]

When I read this paragraph, I began to think we weren't talking about quite the same thing:

> Basically once you start mixing data and metadata, you're getting into
> second-order logic. Whilst the relational model rests on first-order
> logic, things are very nice and work as expected. If you start getting
> away from this, you're on more shaky ground. Sorry if this is a bit of a
> handwaving argument - maybe someone with more knowledge can give a
> concrete example of some problems caused by this kind of thing.

I *think* I see your concern, which is that you don't want to have relations that might or might not have themselves as a member, etc etc. In which case, yes, I agree, relations which might directly or indirectly contain themselves as members is definitely asking for trouble, and is certainly not first order. However, not only is this not what I was asking for, but I would also actively argue against allowing such things, possibly for the same reasons you would.

> > Going back to strings again, why *shouldn't* we be able to treat
> > strings as relations of (int, char) and use the relational algebra on
> > them. [...]
>
> I think this is slightly different to my example in a few ways:
> The attribute can't take any relation value, only a restricted range of
> them (i.e. ones with a single column of type char(1)), . The attribute
> always remains as data, it never makes the jump to meta-data as my
> example does. I'd say the inner select is part of the type system, it's
> really just an operator that takes an argument of a given type and
> returns a value of that same type. It's not interacting with the
> external select, which is part of the relational engine.
>
> So I don't really have a problem with that. The data and the meta-data
> both know their place.

So I'm again not certain I understand your terminology, but it may be that we do not disagree after all.

> > Now someone poke holes in it. But if all you want to do is assert
> > that it's bad without justification, let's save us both the time.
>
> Sorry, I'm just trying to be assertive. You can take my provocative
> statements to be questions if you like. :)

Actually, I don't have a problem with your being assertive. In general I prefer it when people plainly state their position, without apology. It was justification I was asking for; I wanted to hear more from you, not less. (Which I got.)

> Suppose I have a relation with a relation-valued attribute. What if I
> tried to set the attribute in a particular row to be the value of the
> relation itself? Something like:
>
> UPDATE earth SET turtle = earth
>
> where "earth" is a relation and "turtle" is a relation-valued attribute
> of "earth".

You'd be screwed. :-)

Marshall Received on Tue Oct 19 2004 - 07:54:30 CEST

Original text of this message