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

Responder a