2009/12/30 Andre Fernandes <[email protected]>:
Desculpa-me entrar nesta discussão, contudo neste exemplo mencionado há um
possível erro de modelagem, o problema não é a chave artificial explicitamente.
Como eu disse, é um exemplo simplérrimo, somente para demonstrar o
problema, a saber que chave artificial não garante unicidade.
Chaves artificiais não são um mal por si só
Na forma como implementadas hoje, são. Originalmente, eram uma idéia
interessante, mas creio que não foram implementadas em nenhum sistema.
Infelizmente, são um mal necessário em algumas situações. Mas somente
complementando as naturais, nunca substituindo.
Concordo que chaves artificiais podem ser problema quando o modelo está errado
Não apenas, podem ser problemas físicos também.
nem sempre chaves naturais são adequadas ou mesmo possuem bom desempenho
Sempre são adequadas e sempre possuem bom desempenho — a não ser em
situações bem específicas, como já descritas.
(imagine uma chave composta onde todos os campos são strings, pode ser muito
ruim para um bom desempenho de consultas).
Mito.
Além do mais, um id interno para o usuário, para a empresa, etc., pode ser
facilmente entendido, não é um monstro que complica tudo.
Mas obscurece quais as chaves verdadeiras. Geralmente, dificulta o
entendimento.
(lembre-se que nem as regras de normalização sempre devem ser seguidas, há
momentos em que precisamos ferir uma delas para que o desempenho não seja
ínfimo).
Mas isso por limitações do SQL.