¿Qué es una 'clave' en informática?

14

Estoy un poco confundido sobre cuál es exactamente el significado de una "clave" en informática. Entiendo pares clave-valor, claves primarias, etc. Pero no puedo encontrar una definición de lo que el término 'clave' significa por sí mismo.

Por lo que puedo decir, solo significa una pieza de datos. En CLRS, los datos asociados con los nodos de árbol se denominan 'claves'. Los datos para buscar en una tabla hash se denominan 'clave'. ¿Es esto lo que es una 'clave'?

El máximo
fuente
18
No hay una definición técnica específica. El uso de la palabra generalmente está inspirado en su definición normal en inglés, por ejemplo, merriam-webster.com/dictionary/key O más bien debería decir "definición s ". En general, su expectativa debería ser que no haya una definición técnica unificadora de palabras comunes en inglés que se utilicen en múltiples contextos, incluso dentro de un solo campo de estudio.
Derek Elkins dejó SE
44
Incluso podría ser una de esas cosas en su teclado :-)
jamesqf
En realidad, es lo mismo en inglés normal: figura clave = la persona principal en la historia, evidencia clave = la evidencia principal que conduce a la resolución de un caso, clave = el mecanismo principal para abrir una puerta, etc. Significa "la forma principal acceder a algo "en inglés. No es específico de CS
slebetman
También hay "claves" en el sentido criptográfico, que consideraría diferentes de los ejemplos de búsqueda de datos que ha mencionado.
200_success
@slebetman Si bien 'clave' tiene muchos usos en el idioma inglés, hay muchos usos que tienen una definición precisa que es muy específica para (un subcampo de) CS.
Lagarto discreto

Respuestas:

30

En el sentido más general, una clave es una pieza de información requerida para recuperar algunos datos. Sin embargo, este significado se desarrolla de manera diferente dependiendo de exactamente con qué situación está lidiando.

En los contextos que menciona, una clave es un identificador único para los datos completos utilizados para recuperarlos de alguna ubicación en la estructura. Cada clave está asociada con un solo elemento, por lo que se puede utilizar para encontrar un conjunto particular de datos. La estructura de datos generalmente se organizará de tal manera que encontrar la clave sea mucho más eficiente que una búsqueda lineal a través de todos los datos. A veces, la clave es en realidad parte de los datos y se almacena junto con ellos (como las claves principales en la base de datos); otras veces, se segrega de los datos en sí (como en un mapa hash). La estructura de datos también a menudo realizará un procesamiento adicional en la clave (y solo la clave) para admitir su algoritmo de búsqueda eficiente (como en un mapa hash, la clave se convierte en un código hash, o una base de datos indexará las claves primarias usando un árbol B)

En criptografía, una clave se utiliza en un sentido más parecido a las claves físicas utilizadas en las cerraduras. Son datos necesarios para obtener el original de los datos cifrados (para "desbloquear" los datos, por así decirlo).

jpmc26
fuente
3
Para evitar una posible confusión: en el libro CLRS, las claves generalmente no se consideran únicas, ya que no tienen que serlo para muchas estructuras de datos.
Lagarto discreto
Entonces, en general, ¿una clave son los datos para navegar por una estructura de datos? Eso tiene sentido para mí, como si se usara una llave física para recuperar algo de una caja cerrada.
TheMax
@TheMax No diría que la definición se adapta a la criptografía, ya que no hay "navegación" por hacer. Se adapta a su lista de ejemplos, pero no lo veo como un paralelo a una clave física en esos casos.
jpmc26
@ jpmc26 esa descripción es acertada, considere XOR bit a bit de una clave contra datos,
mckenzm
En las escalas que vemos hoy, los hashes utilizados para claves sintéticas pueden no ser únicos, y pueden necesitar interruptores de corbata o compuestos.
mckenzm
12

Una clave en el contexto de las estructuras de datos (como en el libro CLRS) es un valor (a menudo un número entero) que se utiliza para identificar un determinado componente de una estructura de datos. A menudo, las claves determinan cómo se almacenan o manipulan los datos subyacentes. Por ejemplo, en los árboles de búsqueda binarios tenemos que para cada nodo, la clave de ese nodo es más grande que las claves del subárbol izquierdo y más pequeña que las del subárbol derecho. Esta propiedad facilita la búsqueda de una clave determinada (o determina que no hay ningún nodo con dicha clave).

En la práctica, nuestros datos "reales" a menudo no son una clave, sino algo más grande y más relevante que un solo número. Estos datos se denominan datos satelitales y se pueden ignorar principalmente cuando se trata de manipulaciones en estructuras de datos, siempre que los datos satelitales se muevan cada vez que se mueva la clave (de lo contrario, perderá el rastro de sus datos).


El concepto de una clave es similar en el contexto de las bases de datos, pero a menudo se requiere que una clave sea única . Una clave primaria tiene que ser única, por ejemplo. Este requisito es a menudo necesario en el contexto de las estructuras de datos, pero a veces se hace por simplicidad.

En criptografía, una clave generalmente se refiere a un parámetro (¡a menudo secreto, pero no siempre!) Que se necesita para cifrar o descifrar con un algoritmo de cifrado o descifrado dado. Las claves utilizadas para cifrar y descifrar deben estar 'relacionadas' (en criptografía simétrica, la necesidad de ser las mismas) para que el proceso de cifrado o descifrado sea exitoso.

Lagarto discreto
fuente
¿Cuál es la diferencia entre datos satelitales y claves entonces? Por lo que entiendo, los datos satelitales son datos organizados por la estructura de datos que no es parte de la estructura real. Entonces, ¿puedo decir que las claves y los datos del satélite son datos de la estructura, pero las claves son parte de la estructura y los datos del satélite no?
TheMax
1
@TheMax En cierto modo, sí. El contenido preciso de los datos del satélite es irrelevante para las operaciones en la estructura de datos (pero probablemente sea relevante para la aplicación que utiliza la estructura de datos). Este desacoplamiento de clave y datos facilita el diseño de estructuras de datos eficientes.
Lagarto discreto