- Chaves naturais são usadas em bancos de dados para garantir unicidade
- Chaves naturais se baseiam em dados reais, como nome, cidade, ano etc.
- Por exemplo, em um banco de dados dos 50 melhores restaurantes do mundo,
restaurantName, cityName e year poderiam ser usados como chave natural
- No entanto, chaves naturais podem não garantir unicidade. Por exemplo, pode haver restaurantes com o mesmo nome em várias cidades
Identidade
- Além de garantir unicidade, chaves naturais também precisam garantir identidade
- Por exemplo, o número do chassi de um carro ou um número de identificação pessoal (número CPR) poderiam ser usados como chave natural
- No entanto, a mesma pessoa pode ter vários números de identificação. Por exemplo, na Dinamarca, uma pessoa trans pode receber um novo número CPR
Erros de registro
- Chaves naturais são vulneráveis a erros de registro
- Podem ocorrer erros de entrada de dados, erros de digitação do usuário e erros de conversão de dados
- O sistema precisa ser capaz de corrigir esses erros. Portanto, não é adequado usar chaves externas como chaves do banco de dados
Conclusão
- Usar chaves naturais no projeto do banco de dados não é uma boa ideia
- Erros de dados podem ocorrer, e deve ser possível corrigir esses erros
- Portanto, é recomendável sempre usar chaves artificiais nas tabelas do banco de dados
Opinião do GN⁺
- Problemas das chaves naturais: chaves naturais podem não garantir unicidade nem identidade e são vulneráveis a erros de entrada de dados.
- Vantagens das chaves artificiais: chaves artificiais garantem unicidade e identidade, além de facilitar a correção de erros de dados.
- Pontos a considerar ao usar ORM: ao usar bibliotecas ORM, é mais fácil trabalhar com chaves artificiais. Como o ORM determina parte da estrutura do banco de dados, usar chaves artificiais tende a ser mais eficiente.
- Produtos com funcionalidade semelhante: outras ferramentas de modelagem de banco de dados e bibliotecas ORM também recomendam o uso de chaves artificiais. Exemplos incluem Hibernate e Entity Framework.
- Pontos a considerar na adoção da tecnologia: ao adotar um novo projeto de banco de dados, é melhor considerar as desvantagens das chaves naturais e optar por chaves artificiais. Chaves artificiais ajudam a garantir a integridade dos dados e facilitam a correção de erros.
2 comentários
Comentários no Hacker News
cus_MJA953cFzEuO1z, usados pela Stripe. Também há uma forma de gerá-los em JavaScript/TypeScript.Eu também recomendo usar TSID, que já está preparado para ambientes distribuídos, incluindo suporte a regiões globais, em vez de chaves artificiais. Eu uso TSID como PK no MySQL e no DynamoDB.
https://jsonobject.hashnode.dev/using-tsid-as-database-pk