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
Escreva um comentário