> > A VIN exists in the real world, and as such is part of the proposition> > we are encoding. A surrogate key is an artifice of the database, does> > not exist in the world you are modelling, and is implemented to get> > your system working. This seems a very clear distinction to me.

> Perhaps we have different definitions of surrogate keys. The VIN> may be something that's not a surrogate key in database A, but> it's certainly a surrogate key in *some* database, and hence I> don't see any particular difference between it and any other> made-up identifiers. SOMEone, some database, made up the VIN> out of thin air; we could well say they "implemented [it] to get> [their] system working." So I still don't see the distinction> you're drawing here.

A VIN exists in the "real world" (outside every database), doesn't matter
if it is artificial or not (maybe it was born at the same time with the car,
so it is natural after all :-)).

An "invisible id" never leave the database where it was born. It exists in
exactly one database.
Or

An "invisible id" never escape the database world. It doesn't exists in the
real world (outside every database).

> However, there is a definite trap in this general area, which> is the trap of thinking that there is anything profound to> be said about the relationship between the internal and the> external predicate. That relationship, between the database> and the world it models, exists only in the minds of the users> of the system, and it is wholly an illusion, if you will.> This is an important point, and it is also a philosophical one.

The database have to be in sync with the world it models .
When they go out of sync, the database and/or the world need to be updated
somehow.

The SSN and the VIN are a bit different because the SSN is not tattooed on
your skull at birth (yet).
Received on Fri Sep 30 2005 - 02:56:27 CDT