Estou um pouco confuso sobre qual é exatamente o significado de uma 'chave' na ciência da computação. Entendo pares de valores-chave, chaves primárias, etc ... Mas não consigo encontrar uma definição do que o termo 'chave' significa por si só.
Tanto quanto posso dizer, significa apenas um pedaço de dados. No CLRS, os dados associados aos nós da árvore são chamados de 'chaves'. Os dados para pesquisar uma tabela de hash são chamados de 'chave'. É isso que é uma 'chave'?
terminology
TheMax
fonte
fonte
Respostas:
No sentido mais geral, uma chave é uma informação necessária para recuperar alguns dados. No entanto, esse significado é diferente, dependendo exatamente de qual situação você está lidando.
Nos contextos mencionados, uma chave é um identificador exclusivo para os dados completos usados para recuperá-los de algum local na estrutura. Cada chave está associada a apenas um item, portanto, pode ser usada para encontrar um conjunto específico de dados. A estrutura de dados geralmente será organizada de forma que encontrar a chave seja muito mais eficiente do que uma pesquisa linear em todos os dados. Às vezes, a chave faz parte dos dados e é armazenada junto com ela (como chaves primárias no banco de dados); outras vezes, é segregado dos próprios dados (como em um mapa de hash). A estrutura de dados também costuma executar um processamento extra na chave (e somente na chave) para suportar seu algoritmo de pesquisa eficiente (como em um mapa de hash, a chave é convertida em um código de hash ou um banco de dados indexa as chaves primárias usando uma árvore B).
Na criptografia, uma chave é usada em um sentido mais semelhante às chaves físicas usadas nos bloqueios. São dados necessários para obter o original dos dados criptografados (para "desbloquear" os dados, por assim dizer).
fonte
Uma chave no contexto de estruturas de dados (como no livro CLRS) é um valor (geralmente um número inteiro) usado para identificar um determinado componente de uma estrutura de dados. Geralmente, as chaves determinam como os dados subjacentes são armazenados ou manipulados. Por exemplo, nas árvores de pesquisa binária , temos que, para cada nó, a chave desse nó é maior que as chaves na subárvore esquerda e menor que as da subárvore direita. Essa propriedade facilita a pesquisa de uma determinada chave (ou determina se não há um nó com essa chave).
Na prática, nossos dados 'reais' geralmente não são uma chave, mas algo maior e mais relevante que um único número. Esses dados são chamados de dados de satélite e podem ser ignorados principalmente ao lidar com manipulações em estruturas de dados, desde que os dados de satélite sejam movidos sempre que a chave for movida (caso contrário, você perderá o controle de seus dados).
O conceito de uma chave é semelhante no contexto de bancos de dados, mas geralmente é necessário que uma chave seja única . Uma chave primária deve ser única, por exemplo. Esse requisito geralmente não é necessário no contexto das estruturas de dados, mas às vezes é feito para simplificar.
Na criptografia, uma chave geralmente se refere a um parâmetro (geralmente secreto, mas nem sempre!) Necessário para criptografar ou descriptografar com um determinado algoritmo de criptografia ou descriptografia. As chaves usadas para criptografar e descriptografar precisam estar 'relacionadas' (em criptografia simétrica, a necessidade de ser a mesma) para que o processo de criptografia ou descriptografia seja bem-sucedido.
fonte