Re: A pk is *both* a physical and a logical object.

From: Brian Selzer <brian_at_selzer-software.com>
Date: Wed, 18 Jul 2007 01:22:28 GMT
Message-ID: <oXdni.23174$Rw1.4623_at_newssvr25.news.prodigy.net>


"David Cressey" <cressey73_at_verizon.net> wrote in message news:hbcni.9923$yx4.9381_at_trndny08...
>
> "Brian Selzer" <brian_at_selzer-software.com> wrote in message
> news:_jani.39744$Um6.23567_at_newssvr12.news.prodigy.net...
>>
>> "Roy Hann" <specially_at_processed.almost.meat> wrote in message
>> news:7e2dncCYhYD45wHbRVnytAA_at_pipex.net...
>> > "Brian Selzer" <brian_at_selzer-software.com> wrote in message
>> > news:1Pwmi.39574$Um6.32783_at_newssvr12.news.prodigy.net...
>> > [snip]
>> >> In addition, the definition of a candidate key does not demand that
>> >> its
>> >> values rigidly designate individuals in the universe of discourse.
>> >
>> > I've been waiting for someone else to pick up on this comment, but
>> > since
>> > they haven't I'm going to bite. When you talk about "individuals"
>> > here,
>> > do you intend that to be understood as "individual propositions"?
>> >
>> No.
>> > My layman's understanding is that the value of a candidate key most
>> > definitely *is* a unique identifier (and is irreducible).
>> >
>>
>> Indeed. But does the same key value identify the same individual in all
>> possible relation values? Clearly this is not the case. Consider a
>> relation schema in which the entire heading is the key. Now suppose that
> a
>> user issues a update. The tuple that identified an individual in the
>> universe prior to the update is now different from the tuple that
> identifies
>> the same individual after the update. Because the entire heading is the
>> key, it is clear that although the key uniquely identifies an individual
> and
>> is irreducible, it does not rigidly designate that individual. A rigid
>> designator identifies the same individual in all possible relation
>> values,
>> not just the one that happens to be actual at any given point in time.
>>
>
> You can call what the user issued an update, if you care to, but what
> really happened is that an individual, identified by the before value of
> the key, was deleted, and a new individual, identified by the after
> value
> of the key was inserted. The fact that the old value and the new value
> used
> the same storage ("row", if you like) is irrelevant. They are different
> values, and they designate different individuals.
>

Not so. Consider the following statement:

  I moved the widgit with lot number 203 at location 22 to location 44.

Now assuming that there can only be one widgit from the same lot at a particular location, then the definite description before the update,

  the widgit with lot number 203 at location 22

refers to the same widgit as the definite description after the update,

  the widgit with lot number 203 at location 44.

If there is also a rigid designator, then the situation becomes clear:

before the update, these all denote the same individual:

  the widgit with serial number 123 and with lot number 203 at location 22   the widgit with serial number 123
  the widgit with lot number 203 at location 22

which is the same individual as these:

  the widget with serial number 123 and with lot number 203 at location 44   the widget with serial number 123
  the widget with lot number 203 at location 44

after the update.

So, if relation widgits {lot_number, location} has a tuple {lot_number=203, location=22}

and an update is issued:

UPDATE widgits SET location=44 WHERE lot_number = 203 AND location=22

Then the resulting relation has a tuple

{lot_number=203, location=44}

that refers to the same individual as the tuple

{lot_number=203, location=22}

before the update.

>
Received on Wed Jul 18 2007 - 03:22:28 CEST

Original text of this message