[AccessD] 2 quick questions

jwcolby jwcolby at colbyconsulting.com
Tue May 31 17:14:18 CDT 2011


Just trying to get you to a shrink!  We'd all be happier.

;)

John W. Colby
www.ColbyConsulting.com

On 5/31/2011 5:39 PM, Jim Dettman wrote:
> <<We (or I) understand from whence your angst comes but we (or I) feel no
> need to participate in the
> angst.  And no matter how you try, you will not force me to participate in
> your angst.>>
>
>    Hum, well seems kind of funny that you always feel the need to respond.
>
> Jim.
>
> -----Original Message-----
> From: accessd-bounces at databaseadvisors.com
> [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of jwcolby
> Sent: Tuesday, May 31, 2011 05:08 PM
> To: Access Developers discussion and problem solving
> Subject: Re: [AccessD] 2 quick questions
>
> That is the most lucid explanation you have ever attempted, and suddenly I
> understand your angst
> (though I do not participate in your angst).
>
> Unfortunately for you, pretty much nobody cares.  I for one long ago split
> the PK concept into:
>
> 1) Pointer
> 2) Unique index on a selected key.
>
> Having done that the PK is the pointer and the unique index is... a unique
> index.  Which of course
> is the beauty of doing this.  The surrogate never changes (values or fields)
> and the unique index
> can change with the flick of a key.  All the messiness of a real world PK
> goes away.  I embrace that
> with all my heart.  I love it.  Semantics aside, it just works!
>
> We all understand perfectly well that in the relational model the PK is both
> and cannot be split
> into these two pieces but I am forced to work in the real world where the PK
> is (at least when
> surrogates are involved) *only* the pointer part of the equation.  *And*
> more importantly, everybody
> that I am working with and discussing things with (with the *sole* exception
> of you) uses word PK in
> the same manner as I do.
>
> Thus we pretty much ignore your protestations and keep on doing what we do.
>
> Nobody is claiming that selecting a key to use for ensuring uniqueness, nor
> creating the unique
> index is not important, it is simply that I (we I dare say) view it as
> distinct from and not
> necessarily related to the pointer between records.
>
>   >But then all of a sudden, we come to the PK and slap in an auto number and
> it's the "PK".  But
> it's not because you've shifted from a logical context to a physical one.
>
> Well, the physical world forces us to do so.  Why is this a problem?  We
> must select the pointer,
> and the logical PK usually sucks as the pointer so there you are.  We were
> told by the world to call
> the pointer the PK and so we do.  Only you have angst over it.
>
> What is Lead?
>
> 1) A metal
> 2) A piece of metal attached to an electronic component.
> 3) The position out in front.
>
> We often call distinct and not necessarily related things buy the same word.
> We are doing that
> here.  Unfortunately (for you) in this case we are calling both parts (the
> pointer and the selected
> key) the same name and you go ballistic.
>
> We (or I) understand from whence your angst comes but we (or I) feel no need
> to participate in the
> angst.  And no matter how you try, you will not force me to participate in
> your angst.
>
> Go see a shrink and see if you can get over it.  ;)
>
> John W. Colby
> www.ColbyConsulting.com
>
> On 5/31/2011 4:39 PM, Jim Dettman wrote:
>> Asgar,
>>
>> <<I quite agree that an autonumber is not a primary key, but I would then
>> hasten to specify that it is not so in the *logical design* - in the
>> *physical implementation* it certainly could (and IMO should) be.>>
>>
>>     Yes but when modeling data relationally the meaning of what a "Primary
>> Key" is only occurs in the logical sense.  Relational modeling only deals
>> with how data is associated logically and cares nothing about how it is
>> physically stored.
>>
>>     That's why I typically say "Your mixing apples and oranges" when one
>> states that an auto number is a "PK", because it's labeled as such in
>> database products.  To call it a "PK" is misleading; we all supposedly
>> design our databases using the relational model (logically); each table
>> represents one thing, we follow the rules of normalization, etc.  But then
>> all of a sudden, we come to the PK and slap in an auto number and it's the
>> "PK".  But it's not because you've shifted from a logical context to a
>> physical one.  That's where the apples and oranges come in.
>>
>>     John's problem is proof of that.  Even though he has an auto number
> "PK",
>> he's still trying to figure out how to prevent duplicates in his table.
>>
>> <<So just to get you right I would like to know:
>> Do you actually implement the natural key as a primary key and then create
> a
>> unique index on the auto number field? And also: when implementing a
> foreign
>> key, do you make this key point to the natural key rather than to the auto
>> number key?>>
>>
>>     Typically you do the opposite; an auto number for the "PK", and then a
>> unique index based for the PK. Or you assign an ID as a surrogate.  It
> might
>> even be an "auto number", but to me, that's no longer an "auto number"
> even
>> though the field type says it is. You might also go the route of checking
>> the PK in code by doing your duplicate check based on user input.
>>
>>     But when all is said and done, in some way, you need to use the PK.  If
>> you don't, then you don't have a valid relational model for your data.
>>
>> <<The disagreement appears to me to be a matter of wording, or if you
>> prefer: definition - neither of which are trivial! And distinguishing a
>> *logical PK* and a *physical PK* would clarify the discussion.>>
>>
>>      In a large way it is, but again to me, there is no such thing a PK in
> a
>> physical context.  Being a PK is a lot more then simply labeling a row
>> uniquely physically and that always seems to be the bone of contention.
>>
>> Jim.



More information about the AccessD mailing list