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_id
es 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.