Re: Natural keys vs Aritficial Keys

From: Brian Selzer <brian_at_selzer-software.com>
Date: Wed, 27 May 2009 12:25:57 -0400
Message-ID: <qQdTl.27412$c45.10562_at_nlpi065.nbdc.sbc.com>


"David BL" <davidbl_at_iinet.net.au> wrote in message news:568d6b2b-1961-4649-8fad-080773361a6a_at_b7g2000pre.googlegroups.com...
> On May 23, 4:23 am, Bob Badour <bbad..._at_pei.sympatico.ca> wrote:
>>
>> Nope, that's still the first blunder: mapping object instances to
>> tuples. Derived tuples are still tuples.
>
> Date pointed out the obvious blunder in associating a class (which is
> a type) with a relvar (which is a variable). Bob is correct in the
> sense that derived relvars are still relvars.
>

It is less clear that it is a blunder when associating a class (which is a type) with a relation scheme, which is not a variable, but rather very much like a type (at least under the specialization by constraint paradigm). The set of constraints that defines the set of all possible relations indirectly defines the set of all possible tuples. Why, then, should it be wrong to map object instances to tuples?

> I think it's worth making it clear that Bob shouldn't be interpreted
> as stating that tuple-variables are illegal in general (i.e. even when
> they aren't bound to a tuple in some relvar). There is nothing
> implicitly evil with tuple-variables! In fact many programming
> languages support tuple-variables.
>
> I think the best way to understand the blunder is to realise that a
> relvar (only) introduces a binding between a variable and its current
> value which is a set of tuple values, and doesn't introduce a set of
> "subordinate" tuple-variables that individually have bindings to tuple
> values.
>
> One benefit of thinking of the blunder this way, is that it suggests
> it needs to be qualified so the restriction doesn't necessarily apply
> where there are abstract identifiers. Note that an abstract
> identifier is a very different concept to an artificial identifier.
>
> The blunder normally implies that a tuple in a relvar must not be
> identified with a variable ("object instance") of some class.

I don't think object instances are variables.

> However, in the case where the tuple contains an abstract identifier
> that can be interpreted as the name of a variable and the rest of the
> tuple defines the current value of the variable, it seems reasonable
> to define a mapping from tuples to class variables.
>
> I'm actually suspicious of whether the RM is even appropriate when
> there are abstract identifiers.
>
Received on Wed May 27 2009 - 18:25:57 CEST

Original text of this message