2008/7/16 Osvaldo Rosario Kussama <[EMAIL PROTECTED]>:
> Por que utilizar estas chaves artificiais nestas tabelas?

Há algumas razões, umas mais, outras menos controversas.

Talvez o uso menos controverso seja a ausência de boas chaves
naturais.  O problema é decidir o que são boas chaves naturais; em
princípio, todas as chaves naturais são boas, e todas as artificiais
são ruins.

O caso é que tem muita gente, principalmente usuários de ORMs, que não
gosta de chaves compostas.  Acha que fica difícil programar.  Eu nunca
usei ORM, nunca senti na pele, e daí vem minha impressão de que muitos
ORMs criam tantos problemas quanto resolvem.

Uma razão válida é, em casos extremos, economia de armazenamento em
chaves estrangeiras.  Imagine uma relação pai com uma chave natural
composta razoável, digamos mais de três atributos; e uma relação filha
com muito mais tuplas, digamos milhões ou dezenas de milhões a mais,
isso rodando num sistema que é gargalo de desempenho.  Nesse caso,
pode ser que, após testes, valha a pena uma chave primária artificial
para emagrecer a tabela filha.

Uma vez cheguei num acordo interessante com uma equipe apaixonada pelo
Hybernate: eu deixava criar chaves artificiais quando as naturais
tinham mais de três atributos.  Doutra vez, tive de aceitar as chaves
artificiais mas lavei as mãos quanto a desempenho e manutenabilidade
(essa palavra existe?) do modelo e da aplicação, e ainda impus chaves
alternativas naturais.

-- 
skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3040 7300 r155 gTalk: xmpp:[EMAIL PROTECTED]
+55 (11) 9406 7191 ICQ/AIM: aim:GoIM?screenname=61287803
+55 (11) 5685 2219 MSN: msnim:[EMAIL PROTECTED]
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a