Surrogate Key

Surrogate Key

Ein Surrogatschlüssel (Stellvertreterschlüssel, engl. surrogate key, wörtlich: „Ersatzschlüssel“) ist ein Datenbankschlüssel in einer Datenbanktabelle. Eine wichtige Besonderheit dieses Schlüssels ist, dass er nicht aus den Daten in der Tabelle abgeleitet wurde. Surrogatschlüssel werden häufig als Primärschlüssel ausgewählt und dienen dem einfacheren Zugriff auf Datensätze.

Inhaltsverzeichnis

Abgrenzung zu Natürlichen Schlüsseln

Im Gegensatz zu einem sprechenden Schlüssel werden Surrogatschlüssel künstlich erzeugt. Der natürliche Schlüssel hingegen wird aus den Attributen, die ein Datenobjekt beschreiben intuitiv abgeleitet.

Erzeugung

Der Surrogatschlüssel ist häufig, aber nicht zwingend, eine fortlaufende Nummer (Sequenznummer oder Autowert). Der Schlüssel kann entweder durch das Datenbanksystem oder durch ein Anwendungsprogramm vergeben werden. Klassische Anwendungen sind hier ETL-Tools für Data-Warehouses.

Eine wichtige Eigenschaft ist aber, dass zwei Objekte mit gleichem natürlichen Schlüssel auch einen gleichen Surrogatschlüssel haben müssen. Andernfalls würden das Schema gegen die 2. Normalform verstoßen.

Bekannte Vertreter von Surrogatschlüsseln, die keine Sequenznummern sind, sind die Universally Unique Identifier (UUIDs) und Globally Unique Identifier (GUIDs).

Vorteile

Die wichtigste Eigenschaft eines Surrogatschlüssels ist, dass er die Referenz auf ein Datenelement vereinfacht. Im Gegensatz zu einem zusammengesetzten Schlüssel muss lediglich ein einzelnes Attribut als Fremdschlüssel verwaltet werden.

Ein weiterer Vorteil ist, dass beim Ändern eines Datenobjektes der Wert des Surrogatschlüssels unverändert bleibt. Folglich ist auch eine Änderung des Fremdschlüssels unnötig.

Schließlich ist es in der Praxis oft nicht klar, welche Attribute einen sprechenden Schlüssel bilden (oder ein Schlüssel, der ursprünglich eindeutig war, muss aufgrund geänderter Anforderungen später um weitere Attribute ergänzt werden).

Beispiel

In der Mitarbeiter-Datenbank eines Unternehmens A wird die interne Mitarbeiter-Nummer als sprechender Schlüssel gewählt. Später kommen durch einen Zusammenschluss mit einem weiteren Unternehmen B neue Mitarbeiter hinzu. Deren Mitarbeiter-Nummern kollidieren mit Nummern von Mitarbeitern aus A (weil sie in B vor dem Zusammenschluss mit A vergeben wurden). In diesem Falle muss der Schlüssel geändert werden (etwa durch Hinzufügen eines weiteren Attributes für die Herkunft des Mitarbeiters).

Eine spätere Änderung des Schlüssels (also eine Änderung der Liste der Attribute) ist aber äußerst aufwändig, weil sie in allen abhängigen Tabellen und in allen Programmen, die eine dieser Tabellen benutzen, nachvollzogen werden muss.

Anwendungen

Surrogatschlüssel spielen bei der Integration von Daten in ein Data-Warehouse eine wichtige Rolle. Hier werden Daten aus operativen Datenbanken extrahiert und in ein Sternschema überführt. Dabei werden die Daten in Fakten und Dimensionen aufgeteilt. Die Faktentabellen enthalten hier oft eine große Anzahl von Fremdschlüsseln, die auf die Dimensionstabellen verweisen. Diese Aufteilung ist ohne Surrogatschlüssel in der Praxis nicht durchführbar.

Siehe auch


Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Surrogate key — A surrogate key 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. Definition Two definitions of a surrogate appear in the… …   Wikipedia

  • Surrogate — may refer to:Cultural relationships: * Surrogate pregnancy, an arrangement for a woman to carry and give birth to a child who will be raised by others * Sex surrogate, in sexual therapy * Surrogate marriage, a custom in African cultureIn the arts …   Wikipedia

  • Unique key — In relational database design, a unique key can uniquely identify each row in a table, and is closely related to the Superkey concept. A unique key comprises a single column or a set of columns. No two distinct rows in a table can have the same… …   Wikipedia

  • Natural key — In relational model database design, a natural key is a candidate key that has a logical relationship to the attributes within that row. A natural key is sometimes called a domain key. The main advantage of a natural key over a surrogate key,… …   Wikipedia

  • Foreign Key — Ein Schlüssel dient in einer Relationalen Datenbank dazu, die Tupel einer Relation eindeutig zu identifizieren. Anschaulich kann man sich eine Relation als Tabelle vorstellen. Ein Schlüssel für eine solche Tabelle ist dann eine Gruppe von Spalten …   Deutsch Wikipedia

  • Primary Key — Ein Schlüssel dient in einer Relationalen Datenbank dazu, die Tupel einer Relation eindeutig zu identifizieren. Anschaulich kann man sich eine Relation als Tabelle vorstellen. Ein Schlüssel für eine solche Tabelle ist dann eine Gruppe von Spalten …   Deutsch Wikipedia

  • Primary key — Ein Schlüssel dient in einer Relationalen Datenbank dazu, die Tupel einer Relation eindeutig zu identifizieren. Anschaulich kann man sich eine Relation als Tabelle vorstellen. Ein Schlüssel für eine solche Tabelle ist dann eine Gruppe von Spalten …   Deutsch Wikipedia

  • Compound key — In database design, a compound key is a key that consists of 2 or more attributes that uniquely identify an entity occurrence. Each attribute that makes up the compound key is a simple key in its own right. This is often confused with a composite …   Wikipedia

  • Sex surrogate — A sex surrogate is a member of a sex therapy team who engages in intimate physical or sexual relations with a patient in order to achieve a therapeutic goal. The practice was introduced by Masters and Johnson with their work on Human Sexual… …   Wikipedia

  • Data Vault Modeling — is a database modeling method that is designed to provide historical storage of data coming in from multiple operational systems. It is also a method of looking at historical data that, apart from the modeling aspect, deals with issues such as… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”