Re: Surrogate Keys: an Implementation Issue

From: Bob Badour <>
Date: Sun, 30 Jul 2006 00:35:59 GMT
Message-ID: <P9Tyg.28783$>

paul c wrote:
> Bob Badour wrote:

>> paul c wrote:
>>> Brian Selzer wrote:
>>>> ...
>> A hidden surrogate does not allow you to do anything you cannot 
>> already do. ...

> No disagreement about that, but another perhaps minor point which
> confuses me - CJ Date seems to discount a 'hidden surrogate' based on
> the information principle, ie., IIIGIR, a surrogate must be exposed,
> otherwise it's something physical. I've been discounting what I think
> Codd meant, a 'hidden key' that has some other properties to boot, which
> a dbms might offer verbs to create or manipulate. (I don't see how you
> can have verbs without saying what they are allowed to operate on.)

One of the great advantages of using values as identifiers is they preserve their meaning in all media. Thus one can export some data to a spreadsheet and email it to someone. The recipient can print it out and fax it to a third person. That third person can transcribe some values into a document of some sort and mail it back to the owner of the dbms. The owner of the dbms can then use the values from the document to manipulate data in the database.

Ditto for a person in one department talking on the phone to a person in another department. One can communicate the necessary value in any number of ways.

If one hides the surrogate so that users cannot see it, the users lose the ability to logically identify things. Can you imagine a state issuing driver's licenses without driver's license numbers? Can you imagine a police officer trying to get the dispatcher to run a warrant/ticket search without a number to read into the radio?

> perhaps not-too-deep appreciation makes me think that I don't agree with
> them unless the dbms is a kind of superior application which is probably
> over my head as far as implementations go. After a couple of days of
> this, I still am not able to distinguish a surrogate that I can do
> anything with, from a candidate.

Of course you cannot. All candidate keys are surrogates. Natural keys are merely familiar surrogates. I am not a symbol. You are not a symbol. A driver's license is not a symbol. A driver's license number is a value expressible as a symbol that we use as a surrogate for actual people and things. Because it has symbolic representation, you and I can communicate it to each other and (importantly) to machines.

If we hide it, all we have done is hobbled ourselves.

[surrogate locks stuff snipped] Received on Sun Jul 30 2006 - 02:35:59 CEST

Original text of this message