Abstract identifiers, logical pointers, or foreign keys considered not enough
Date: Thu, 09 Oct 2003 11:40:48 -0700
Message-ID: <bm49va$io39m$1_at_ID-152540.news.uni-berlin.de>
It has been claimed that logical pointers are harmful and not necessary.
Everything can be expressed in terms of values. Well, logical pointers are values, for any reasonable definition of value. They are elements of a well defined types (or sort) in many sorted algebra, just like integers and strings.
Surrogate keys on the other hand are nothing but logical pointers, they are an explicit, programmer hand made instantiation of "logical pointers". Actually logical pointers is maybe a wrong term, a better name would be abstract identifier. Surrogate keys introduce unnecessary difficulties in expressing constraints and logical operations. They are good, insofar as the outside world (i.e. the business world) incorporates them into their model (their language), but if they are used just by the software system (as most of them are, in practice) in order to workaround technical limitation in the DBMS, then they are definitely not better than logical pointers.
I put a small example justifying the technical difficulties.
Lee Fesperman wrote:
>>Seun Osewa wrote:
>>
>>>I would also like to know the classical arguments against the network
>>>model or other "pointer based" models. The only things I know are
>>>that:
>>>
>>>** using pointers to positions in memory or disk can be messy when
>>>data has to be moved around. But then is seems there are several
>>>simple ways to solve this, e.g. what I can only call "logical
>>>pointers".
>>
>>Correct. There's absolutely no reason to believe that you cannot have
>>data independence with logical pointer or references. I would however
>>argue that allowing entities without representable keys is not a good idea.
>
>
> Incorrect. Even though you call them 'logical' pointers, they are still physical
> artifacts and have no place in a truly logical view of the database. Databases are about
> data, and pointers are not data (or meta-data).
>
> This is very old news.
>
> The OP needs to increase his knowledge of database concepts before he tries to 'fix'
> things. A newsgroup is the wrong place to get any real depth of understanding.
>
In any case, the mechanism is simple and doesn't pose any logical problem. Contrary to the claim that logical pointers are illogical. On the contrary, under the model proposed say in The Third Manifesto, this very simple problem is difficult to handle. Received on Thu Oct 09 2003 - 20:40:48 CEST