Wie nennt man etwas, das nicht der Primärschlüssel ist?

7

Ich habe mit einer Gruppe zusammengearbeitet, die ein System aufgebaut hat, in dem sie einige neue Begriffe geprägt haben, und ich wollte wissen, ob es etwas Standardisierteres gibt, das sie nennen sollten.

Grundsätzlich verfügen sie über Tabellen, die versionierte Informationen enthalten. Der eindeutige Schlüssel für die Tabelle ist also die Kennung für das zu verfolgende Dokument sowie die Datensatznummer (obwohl die Datensatznummer automatisch nummeriert ist, sodass sie an sich eindeutig ist). Sie beziehen sich auf die Felder, aus denen sich die Kennung des Dokuments zusammensetzt (sie ändert sich für jede Tabelle), als 'Hauptschlüssel' ... aber auf die Felder sowohl einzeln als auch gemeinsam (z. B. wenn die Felder A, B und C vorhanden sind, um a zu erhalten eindeutigen Identifikator, könnten sie auf A beziehen sich austauschbar als ‚wobei eine prime key‘ und A / B / C als ‚ die prime key‘

Wenn sie eine normalisierte Datenbank hätten, wäre dies ein offensichtlicher Kandidat für einen Fremdschlüssel - aber sie ist nicht normalisiert, sodass sie nicht auf eine andere Tabelle verweist.

Gibt es einen Namen für dieses Konzept - eine Kennung zur Auswahl eines Konzepts, auf dem die Tabelle nicht basiert, das aber kein Fremdschlüssel ist?


Update: Es handelt sich nicht um einen alternativen Schlüssel, da kein eindeutiger Datensatz in der Tabelle identifiziert wird. Es identifiziert eine Gruppe von Datensätzen. Nehmen Sie den folgenden Tisch:

id   document_id   version_no
--   -----------   ----------
 1             1            1
 2             2            1
 3             1            2
 4             2            2
 5             2            3

Wir verfolgen also Metadaten für 5 Objekte, bei denen es sich um zwei verschiedene Dateien handelt, von denen eine einmal aktualisiert wurde (2 Versionen / Editionen davon) und eine zweimal aktualisiert wurde.

Wir haben folgendes:

  • Kandidatenschlüssel: (id) oder (document_id, version_no)
  • natürlicher Schlüssel: (document_id, version_no)
  • Ersatzschlüssel: (id)
  • Primärschlüssel: (id, document_id) (Ich habe ihn nicht ausgewählt)

... wenn document_ides sich um eine Beziehung zu einer anderen Tabelle handelt, handelt es sich um einen Fremdschlüssel, aber 'Fremdschlüssel' führt normalerweise auch zu einer Einschränkung (dh der Wert muss in einer anderen Tabelle vorhanden sein, bevor er hier verwendet werden kann). . aber in diesem Fall ist es nicht. Gibt es also einen anderen Begriff, der dies als etwas beschreibt, das eine verwandte Gruppierung von Objekten anstelle eines einzelnen Datensatzes aus der Tabelle auswählt?

Die erste Definition von Ersatzschlüssel auf der Wikipedia-Seite für Ersatzschlüssel passt, aber das ist nicht die übliche Verwendung des Begriffs, bei der die meisten Leute einen Ersatzschlüssel für die zweite Definition in Betracht ziehen:

  • Ersatz (1): Diese Definition basiert auf der von Hall, Owlett und Todd (1976). Hier repräsentiert ein Ersatz eine Einheit in der Außenwelt. Der Ersatz wird vom System intern generiert, ist jedoch für den Benutzer oder die Anwendung sichtbar.
  • Ersatz (2): Diese Definition basiert auf der von Wieringa und De Jonge (1991). Hier repräsentiert ein Ersatz ein Objekt in der Datenbank selbst. Der Ersatz wird vom System intern generiert und ist für den Benutzer oder die Anwendung nicht sichtbar.

Update 2 : Wenn Sie eine Tabelle hatten, die die Versionierung von Datensätzen handhabte, wenn Sie die Datensätze in eine neue Tabelle verschoben und den Bearbeitungsverlauf gespeichert haben, werden die Felder, die mit der ursprünglichen Tabelle verknüpft sind, als Fremdschlüssel betrachtet ... aber wenn Sie haben alles in einer Tabelle gespeichert, ohne sich auf eine sekundäre Tabelle zu beziehen. Gibt es einen Namen für die Gruppe von Feldern, die die mehreren Versionen des Datensatzes identifizieren?

Der Grund, den ich frage, ist, dass die Gruppe, mit der ich zusammenarbeite, beschlossen hat, es als "Hauptschlüssel" zu bezeichnen. Als ich an Bord kam, überprüfte ich alle ihre Unterlagen und sagte ihnen, dass sie einen Tippfehler hatten, und es war der 'Primärschlüssel', aber sie erklärten, dass nein, es war der Ausdruck, den sie geprägt hatten, um dieses Konzept zu beschreiben.

Ich versuche herauszufinden, ob es in der Datenbank-Community einen akzeptierten Namen für dieses Konzept gibt.

Joe
quelle
In mancher Hinsicht ist die document_id ein Ersatzschlüssel, aber in unserem speziellen Fall handelt es sich um das Hashing eines natürlichen Schlüssels (Zeit in 12-Sekunden-Slots) ... der natürliche Schlüssel (Zeit) kann sich zwischen Versionen / Editionen ändern Wissenschaftsdaten, also gibt es Korrekturen für Zeitverschiebung usw.)
Joe
Wenn id ein Kandidatenschlüssel ist, kann (id, document_id) möglicherweise kein Primärschlüssel sein, da es sich nicht um einen minimalen Superschlüssel handelt. Es könnte die Spalte sein, auf die durch eine PRIMARY KEY-Einschränkung verwiesen wird, aber das ist anders.
Nvogel
@dportas: Es ist kein Kandidatenschlüssel ... es ist technisch gesehen eine Kennung für ein anderes Konzept. Lassen Sie mich die Frage aktualisieren.
Joe

Antworten:

7

Benutzerbegriffe Ersatzschlüssel und natürlicher Schlüssel für Primärschlüssel als Variante.

Ersatzschlüssel:

Ersatzschlüssel sind Schlüssel, die keine geschäftliche Bedeutung haben und ausschließlich zur Identifizierung eines Datensatzes in der Tabelle verwendet werden. Solche Schlüssel werden entweder von der Datenbank generiert (Beispiel: Identität in SQL Server, Sequenz in Oracle, Sequenz / Identität in DB2 UDB usw.) oder vom System generierte Werte (wie sie über eine Tabelle im Schema generiert werden).

Natürlicher Schlüssel:

Schlüssel sind natürlich, wenn das Attribut, das sie darstellen, unabhängig vom Datenbankschema zur Identifizierung verwendet wird. Dies bedeutet im Grunde, dass die Schlüssel natürlich sind, wenn sie von Personen verwendet werden. Beispiel: Rechnungsnummern, Steuernummern, SSN usw.

Ersatzschlüssel gegen natürliche Schlüssel für Primärschlüssel

garik
quelle
6

Ein "Kandidatenschlüssel" ist eine Spalte oder Sammlung von Spalten, die einen Datensatz in einer Tabelle eindeutig identifizieren können.

Ein "Primärschlüssel" ist ein Kandidatenschlüssel, der als Primärschlüssel für die Tabelle definiert ist.

Intern ist ein Primärschlüssel einfach ein eindeutiger Index, gruppiert oder nicht geclustert, der normalerweise in Fremdschlüsselbeziehungen verwendet wird.

Wie immer steckt mehr dahinter, aber ich hoffe, das hilft.

Matt M.
quelle
5

Ein zusammengesetzter Schlüssel würde auch definieren, was Sie beschreiben.

Ich habe gehört, dass es auch andere Dinge nennt, wie zusammengesetzte Schlüssel. Beachten Sie jedoch, dass der zusammengesetzte Schlüssel nicht mit einem zusammengesetzten Schlüssel identisch ist. Ich versuche nur, Sie auf zwei Vokabeln aufmerksam zu machen.

jcolebrand
quelle