O que é uma Chave Surrogada em Bancos de Dados

Chave Surrogada ou Substituta

Um requisito básico no desenvolvimento de um banco de dados é ter uma chave primária para cada tabela. Podemos especificar uma chave primária de duas formas:

  • Usar os próprios dados armazenados como chave primária - Por exemplo, usar o CPF armazenado de um cliente como chave primária de uma tabela de Clientes. Chamamos a esse tipo de chave de Chave Natural.
  • Usar um campo criado especificamente para ser chave primária, com valores gerados artificialmente, por exemplo por meio de uma sequência de números em auto-incremento. Esse tipo de chave é chamada de Chave Surrogada (Surrogate key) ou Chave Substituta.

Chave Surrogada

No geral, uma chave surrogada é um valor numérico inteiro, sem significado específico para o registro que representa - seu valor não é derivado dos dados armazenados no banco de dados.

Por conta disso, os valores de chave surrogada geralmente não são apresentados aos usuários em uma consulta, pois são irrelevantes fora de seu contexto.

Características de Chaves Substitutas

Uma chave substituta precisa obedecer a algumas regras para ser considerada válida:

  • Seu valor deve ser gerado automaticamente pelo sistema
  • Não pode ser manipulável ou alterável pelo usuário
  • O valor deve ser único, sem reutilização
  • Não possuir nenhum significado semântico
  • Não deve ser composta de outros valores presentes na tabela
  • Não ser visível ao usuário e nem para a aplicação que acessa o banco de dados.

Gerando Chaves Surrogadas

Podemos gerar chaves surrogadas de várias formas, dependendo do SGBD considerado. Por exemplo, no MySQL usamos a palavra-chave AUTO_INCREMENT, ao passo que no Microsoft SQL Server usamos IDENTITY, no PostgreSQL o tipo serial, e no Oracle Database, SEQUENCE.

Uma das vantagens de se utilizar chaves surrogadas é a não necessidade de inserir valores neste campo durante inserção de dados em uma tabela, haja vista que os valores são gerados automaticamente - apesar de que neste caso, o sistema pode utilizar mais recursos durante a inserção dos dados, pois precisa gerar o valor da chave.

Exemplo

No exemplo abaixo, temos uma tabela de produtos em estoque em um pequeno mercado. Note que existe um campo, batizado de "ID", cujo valor é um número sequencial, sem significado nenhum para os produtos em si. Esta é a chave primária surrogada, pois seus valores são gerados automaticamente pelo sistema cada vez que um novo produto é cadastrado:

ID Nome_Produto Quant_Prod Preco_Prod Categ_Prod
1 Lata de Sardinha 25 3,99 Enlatados
2 Biscoito de Leite 30 1,65 Doces
3 Salame Italiano 12 56,20 Embutidos
4 Milho em Conserva 30 2,50 Enlatados
5 Chocolate Kit-Kat 37 3,50 Doces

Veja também: O que são bancos de Dados

 

Sobre Fábio dos Reis (1198 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*