Surrogate Key
A Surrogate Key is a database key that ...
- AKA: Synthetic Key, Entity Identifier, System-Generated Key, Database Sequence Number, Factless Key, Technical Key, Arbitrary Unique Identifier.
- See: Natural Key, Database.
References
2017
- (Wikipedia, 2017) ⇒ https://en.wikipedia.org/wiki/surrogate_key Retrieved:2017-4-17.
- A surrogate key (or synthetic key, entity identifier, system-generated key, database sequence number, factless key, technical key, or arbitrary unique identifier) in a database is a unique identifier for either an entity in the modeled world or an object in the database. The surrogate key is not derived from application data, unlike a natural (or business) key which is derived from application data.
2017
- (Wikipedia, 2017) ⇒ https://en.wikipedia.org/wiki/surrogate_key#Definition Retrieved:2017-4-17.
- There are at least two definitions of a surrogate:
- Surrogate (1) – Hall, Owlett and Todd (1976): A surrogate represents an entity in the outside world. The surrogate is internally generated by the system but is nevertheless visible to the user or application.[1]
- Surrogate (2) – Wieringa and De Jonge (1991): A surrogate represents an object in the database itself. The surrogate is internally generated by the system and is invisible to the user or application.
- The Surrogate (1) definition relates to a data model rather than a storage model and is used throughout this article. See Date (1998).
An important distinction between a surrogate and a primary key depends on whether the database is a current database or a temporal database. Since a current database stores only currently valid data, there is a one-to-one correspondence between a surrogate in the modeled world and the primary key of the database. In this case the surrogate may be used as a primary key, resulting in the term surrogate key. In a temporal database, however, there is a many-to-one relationship between primary keys and the surrogate. Since there may be several objects in the database corresponding to a single surrogate, we cannot use the surrogate as a primary key; another attribute is required, in addition to the surrogate, to uniquely identify each object.
Although Hall et al. (1976) say nothing about this, othershave argued that a surrogate should have the following characteristics:
- the value is unique system-wide, hence never reused
- the value is system generated
- the value is not manipulable by the user or application
- the value contains no semantic meaning
- the value is not visible to the user or application
- the value is not composed of several values from different domains.
- There are at least two definitions of a surrogate:
- ↑ P A V Hall, J Owlett, S J P Todd, "Relations and Entities", Modelling in Data Base Management Systems (ed GM Nijssen), North Holland 1976.