Ops, então o elogio foi para o Sebastião.

Esse papo de chave artificial (surrogate) e chaves candidatas dá assunto para 
300 dias :)

Eu nos meus 20 anos de profissão e de modelagem de dados já cheguei a conclusão 
que uma chave candidata é igual a político. É só ela ser eleita que ela já 
começa a mudar de opinião :)

O que eu quero dizer é que uma chave que hoje faz todo sentido de ser candidata 
deixará de ser daqui a 5 anos, por conta das mudanças externas impostas pelo 
ambiente. E quanto mais tempo ela tiver existido, maior será a dor de cabeça 
será para ela ser mudada.

Se vc já modela todas (ou quase todas) as tabelas do sistema com surrogate 
keys, vc evita uma gama enorme de problemas que surgirão, aumentando o ciclo de 
vida do seu modelo, enfim fazendo que se gaste menos para implementar mudanças.

Se vc analisar os modelos do SAP R3, ou do Oracle Applications, vc verá que 
eles são recheados de Surrogate keys. Só assim, eles conseguem responder por 
uma gama enorme de requisitos que chegam a todo instante.

Sugiro que vc dê uma olhada no livro do Scott Ambler "Refactoring Databases" - 
lá ele detalha em minúcias o que eu tentei explicar aqui.

Saudações,
Josir Gomes

Em Sex, 2007-08-10 às 10:00 -0300, Josir Gomes escreveu:

> legal vc ter levantado essa questão.

        Desta vez eße mérito não foi meu, mas do Sebastião.



> E o que vc me diz de tabelas que representa um relacionamento n-n de 2
> tabelas que tenham chaves primárias surrogate?

        Em primeiro lugar, eu questionaria o fato das chaves primárias das
tabelas interrelacionadas serem artificiais.

        Em segundo lugar, eu buscaria usar chaves candidatas simples,
*principalmente* porque ißo me forçaria a declará-las ? e uma chave
primária artificial *nunca* deve substituir uma chave candidata, apenas
complementá-la *se* esta for composta ou tiver algum outro problema
_grave_

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a