Em 17/02/2012 14:13, Guimarães Faria Corcete DUTRA, Leandro escreveu:
>> Eu quase sempre utilizo chaves artificiais. Porque conforme já
>> expressei minha opinião aqui na lista, na prática, é quase impossível
>> conseguir chaves naturais fiáveis. São poucas as entidades que o possuem.
>
> Aí é que discordo, e nunca ninguém mostrou aqui. Pelo contrário, se
> não há chave natural, não é entidade ou não está bem analisada. Dá
> para fazer funcionar, mas longe do melhor.
Até onde estudei sobre bancos de dados, para ser considerada uma
entidade precisamos ter uma chave que o identifique, seja natural ou
artificial. Natural quando o atributo faz parte do objeto modelado e
artificial quando não. Isto é bonito filosoficamente, já discutimos
sobre isto e você não conseguiu me dar uma chave natural fiável para um
Cliente que é uma entidade super comum. Quem conseguiria analisar ela
bem? Ela não é uma entidade?
Se tem uma chave única, natural ou não, ela é uma entidade, sua
afirmação, por mais categórica que seja, não consegue mudar este fato.
A boa prática indica que devemos sempre dar preferencia aos atributos
naturais para evitar a repetição. Esta discussão sempre me faz lembrar
das aulas de filosofia na Faculdade. Para um sistema especialista, com
regras criteriosamente definidas dentro de uma empresa, e que somente
rode para esta empresa, sua abordagem até faz sentido. Mas este mundo
ideal não passa daí.
Quem desenvolve sistemas para vários clientes, com regras diferentes
percebe rapidamente, que ser generalista resolve os problemas mais
facilmente e sem dor, um índice unique é muito mais simples para
garantir unicidade de que convencer o cliente que ele tem que cadastrar
diversas informações que não serão usadas no negócio dele só para que o
modelo de dados fique bonitinho e para que a lista de postgresql não o
ache opaco e sem graça.
>> Cada um sabe onde seu sapato aperta.
>
> Exato. Amiúde, é até falta de condições — tempo, recursos,
> informações, conhecimento, confiança, um SGBD decente — de fazer uma
> análise e implementação decentes.
Ou não, acho que apenas o tipo de nicho de sistemas serviria para
diferenciar, sistema que só roda em um único cliente com regras muito
bem definidas ou mais de um com regras bem definidas e compartilhadas, e
sistemas que rodam em vários clientes com regras muito diversificadas.
No geral, são muito mais raros os sistemas feitos para rodar em apenas
um cliente.
Abraço,
--
Shander Lyrio
http://about.me/shander
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral