2008/10/7 Leandro Guimarães Faria Corcete DUTRA <[EMAIL PROTECTED]>:
> Le Tue, 07 Oct 2008 00:50:33 +0900, Yoshio a écrit :
>
>> Sempre ouvi e li que o melhor é ter sempre uma chave primária numérica
>> na tabela e evitar chaves textuais.
>
> Por quê?

Tenho quase certeza de ter visto isso na Wikipedia, mas fui lá e não
achei o texto. Lembro também de alguma coisa dizendo que na 3NF as pks
tinham que ser numéricas. Talvez eu estivesse muito lesado a cabeça no
dia, mas tenho certeza de ter visto estas informações em algum lugar.

Quando as chaves serem ou textuais pode ser que eu não consiga
utilizar corretamente o registro dele em um sistema que exiba uma
codificação de caracteres diferente. Não estou falando de
chaves/código como "AZN" ou "HLP", mas com significado explícito como
"Livros" ou "Brinquedos" de tabela de categorias. Seguindo essa idéia,
se eu utilizar uma chave "日本語" ela pode virar um "日本語" em um
sistema não unicode. Estou dando este exemplo porque isso aconteceu
comigo, peguei um sistema estrangeiro que tinha algo parecido. Na hora
de exibir as "categorias" para o usuário escolher dava problemas com
os caracteres em alguns SOs. Por exemplo, ao cadastrar um "produto"
com referencia a uma "categoria" o db dizia que a chave não existia.
Para resolver o problema tive que colocar uma chave numérica, com isso
mesmo exibindo errado era possível alterar a categoria do produto
normalmente.
Mas isso tem vários poréns que não tem haver com o DB na verdade, o
problema era a aplicação não ter o suporte necessário. Por isso veio
essa minha dúvida (que pelo visto é sobre chaves naturais ou
artificiais) do que é real e usável e o que é só teoria?

>
>> Não cheguei a trabalhar pra valer em
>> um banco bem normalizado, então não sei se isto é verdade.
>
> Não é.
>
>
>> Em todos os
>> fontes que eu vejo por aí (principalmente aqueles controles de locadoras
>> e estoques) muitas tabelas não possuem chave primária numérica (pra
>> falar a verdade alguns nem tinham relacionamento)
>
> Relacionamentos não têm muito a ver com a questão de chaves numéricas
> (artificiais) ou naturais.

Isso se encaixa na parte real ou na parte da teoria como eu falei?

>> como uma tabela de
>> categorias que só tem um campo "categoria" do tipo texto (varchar) sendo
>> ele mesmo a chave primária. Gostaria de saber a opinião de vocês, seria
>> "pecado" demais utilizar campo de texto como chave primária?
>
> Pelo contrário, uma relação (tabela) sem chave natural não é correto.
>
> Vide o texto de minha apresentação no PgConBR...

Onde posso encontrar esse texto?
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a