Ich bin ein bisschen verwirrt darüber, was genau die Bedeutung eines Schlüssels in der Informatik ist. Ich verstehe Schlüssel-Wert-Paare, Primärschlüssel usw. Aber ich kann keine Definition dessen finden, was der Begriff "Schlüssel" für sich bedeutet.
Soweit ich das beurteilen kann, handelt es sich nur um ein Datenelement. In CLRS werden Daten, die Baumknoten zugeordnet sind, als "Schlüssel" bezeichnet. Daten zum Durchsuchen einer Hash-Tabelle werden als "Schlüssel" bezeichnet. Ist das, was ein "Schlüssel" ist?
terminology
TheMax
quelle
quelle
Antworten:
Im Allgemeinen ist ein Schlüssel eine Information, die zum Abrufen einiger Daten erforderlich ist. Diese Bedeutung spielt sich jedoch in Abhängigkeit von der jeweiligen Situation unterschiedlich ab.
In den Kontexten, die Sie erwähnen, ist ein Schlüssel eine eindeutige Kennung für die vollständigen Daten, die zum Abrufen dieser Daten von einer bestimmten Stelle in der Struktur verwendet werden. Jeder Schlüssel ist nur einem Element zugeordnet, sodass ein bestimmter Datensatz gefunden werden kann. Die Datenstruktur wird normalerweise so organisiert, dass das Auffinden des Schlüssels wesentlich effizienter ist als eine lineare Suche durch alle Daten. Manchmal ist der Schlüssel tatsächlich Teil der Daten und wird zusammen mit diesen gespeichert (wie Primärschlüssel in der Datenbank). In anderen Fällen wird es von den Daten selbst getrennt (wie in einer Hash-Karte). Die Datenstruktur führt außerdem häufig eine zusätzliche Verarbeitung des Schlüssels (und nur des Schlüssels) durch, um dessen effizienten Suchalgorithmus zu unterstützen (z. B. in einer Hash-Map wird der Schlüssel in einen Hash-Code konvertiert, oder eine Datenbank indiziert die Primärschlüssel mithilfe von ein B-Baum).
In der Kryptographie wird ein Schlüssel in gewisser Weise verwendet, die den physischen Schlüsseln ähneln, die für Schlösser verwendet werden. Dies sind Daten, die erforderlich sind, um das Original aus den verschlüsselten Daten zu erhalten (um die Daten sozusagen "freizuschalten").
quelle
Ein Schlüssel im Kontext von Datenstrukturen (wie im Buch CLRS) ist ein Wert (häufig eine Ganzzahl), mit dem eine bestimmte Komponente einer Datenstruktur identifiziert wird. Oft bestimmen Schlüssel, wie die zugrunde liegenden Daten gespeichert oder manipuliert werden. In binären Suchbäumen haben wir zum Beispiel, dass für jeden Knoten der Schlüssel dieses Knotens größer als die Schlüssel im linken Unterbaum und kleiner als die im rechten Unterbaum ist. Diese Eigenschaft erleichtert die Suche nach einem bestimmten Schlüssel (oder stellt fest, dass kein Knoten mit einem solchen Schlüssel vorhanden ist).
In der Praxis sind unsere „tatsächlichen“ Daten oft kein Schlüssel, sondern etwas Größeres und Relevanteres als eine einzelne Zahl. Diese Daten werden als Satellitendaten bezeichnet und können bei Manipulationen an Datenstrukturen meist ignoriert werden, solange sich die Satellitendaten bei jeder Bewegung des Schlüssels bewegen (andernfalls verlieren Sie den Überblick über Ihre Daten).
Das Konzept eines Schlüssels ist im Kontext von Datenbanken ähnlich, aber dort ist es häufig erforderlich, dass ein Schlüssel eindeutig ist . Ein Primärschlüssel muss beispielsweise eindeutig sein. Diese Anforderung ist im Zusammenhang mit Datenstrukturen häufig erforderlich, wird jedoch manchmal der Einfachheit halber gemacht.
In der Kryptographie bezieht sich ein Schlüssel normalerweise auf einen (oft geheimen, aber nicht immer!) Parameter, der zum Verschlüsseln oder Entschlüsseln mit einem bestimmten Ver- oder Entschlüsselungsalgorithmus benötigt wird. Die zum Verschlüsseln und Entschlüsseln verwendeten Schlüssel müssen "verwandt" sein (in der symmetrischen Kryptografie müssen sie identisch sein), damit der Ver- oder Entschlüsselungsprozess erfolgreich ist.
quelle