Chave primaria

Pessoal sei que em alguns casos podemos escolher chaves primarias naturais como placa do carro, cpf, rg e etc…

porem em 99% dos sistemas que ja vi, mesmo nesses casos, sao utilizadas chaves substitutas como cod veiculo, cod pessoa e etc.

alguem ve problema na abordagem de usar chave natural (login) no caso de um cadastro de usuarios tendo em vista que o login nunca se podera se repetir ?

abrassss

Uma dica importante: Não use chaves naturais para chaves primárias.

Isso por que não é você que controla o formato da chave natural, nem a regra de negócio ao qual está associada. Por exemplo, você decide que a placa de um carro é um boa chave primária. Ótimo, faz um campo char(7) para sua placa. Vincula absolutamente todas as 900 tabelas do seu banco que usam placa a essa chave então… O governo decide adicionar uma nova letra a placa. Ou o seu gerente decide que agora quer controlar também carros não emplacados…

Resultado: Bem-vindo ao inferno, amigo.

Da mesma forma, você usa o login como chave. Um belo dia, o gerente seiláoque de nãoseiaonde decide que seria ótimo admitir logins repetidos no caso de regionais diferentes da sua empresa. E que isso será detectado automaticamente, pelo IP da máquina…

Como as chaves primárias tem o hábito peculiar de se espalhar pelo banco inteiro, tenha certeza que a regra de negócio que as gere está sob o seu controle. Por isso a alta popularidade dos campos de auto-numeração.

Nossa, por acaso acabei lendo sua resposta e é verdade. Mesmo que pareça que nunca vá mudar o CEP, CPF, RG, pode ser que o número de ruas, população aumente e pum, já era a sua chave.
Fora que aconteceu já com os telefones quando passaram a ter 4 dígitos iniciais. Tinha uma empresa em que trabalhei cujo usou chaves primárias em telefones. Quando em 2000 ou 2001, não me lembro, os telefones de são paulo mudaram, foi um caos.
HOje sem auto-numeração acredito que não valha a pena criar a primeira chave primária.

sempre tive essa duvida e ngm nunca conseguiu uma resposta que me convencesse, ViniGodoy meu ídolo! hahaha

mto obrigado mesmo!

abrassss

Desculpa reabrir este tópico, mas eu estou agora passando pela mesma questão, qual propriedade do carro usar como chave primaria ?

Bom, pensei também em usar a “PLACA”. Depois de ler a resposta do nosso amigo ViniGodoy, tenho uma crítica a fazer:

Você deu o exemplo de utilizarmos um char(7) fixo, mas poderíamos muito bem definir a placa como chave primaria sendo um varchar(15). Assim mesmo que aumentem a quantidade de caracteres da placa, já teríamos um campo que suporta até 15 caracteres. Não resolve o problema ?

Não pelo seguinte motivo: uma mesma placa de carro pode identificar dois ou mais carros diferentes.

Um colega de um ex-chefe meu gostava muito da placa dele (que era o ano de nascimento dele, mais a sigla da empresa dele).

Então, sempre que ele trocava de carro, ele transferia a placa do carro antigo para o novo - isso dá para fazer, embora poucas pessoas façam isso porque é sempre um pouco burocrático.

Da mesma forma, você pode pedir para trocar a placa do seu carro, se você justificar que está dando muitos problemas (por exemplo, a placa foi clonada e você está tomando multas a torto e a direito).

Não acho que o governo vá adicionar mais uma letra ou número, mas acho que você pode ter problemas com o fato que uma placa não identifica univocamente um carro.

Dessa eu não sabia, pensei que a placa era um valor único e exclusivo para cada veículo.

Mas ainda temos o: chassi e o renavam, ambos são exclusivos, não ?

Acho que o Renavam pode ser usado (é mais ou menos como se fosse o CPF). O número do chassi é desajeitado porque é quilométrico, tem letras e números e é muito difícil de validar, já que cada montadora tem sua regra.

Bom, vamos de renavam então.

Obrigado pela dica !!