Sim, na verdade eu editei o texto várias vezes e este detalhe passou
despercebido. Este campo, "chave_extra", ficaria com um valor tipo 0 (se for
inteiro) ou brancos (se for texto) na maioria dos casos. Mas tenho minhas
dúvidas se esta é mesmo a melhor solução, acho que no fim vai ser melhor
usar uma chave artificial, a famosa "código do cliente".

Existe também o problema da replicação. Cada filial tem um servidor
(replicado) e nenhuma loja pode parar por falta de Internet ou falta de
comunicação com a Matriz. Sei que muitas empresas simplesmente param quando
isso acontece, com a tradicional explicação de que "estamos sem sistema",
mas nós nunca achamos isto aceitável -- especialmente no caso das redes de
varejo. Além disso, a legislação praticamente exige que o software de PDV
emita cupons mesmo com o cabo de rede cortado.

Neste cenário, cada servidor tem suas (poucas) SEQUENCES independentes
(estão fora da replicação) e as PK de algumas tabelas são chaves compostas
que incluem a coluna "id_servidor". Os clientes acabam recebendo um código
que costuma ser exibido no formato 9502/1 (código 9502 do servidor 1) e os
JOINS precisam sempre considerar isto. Não chega a ser nada desesperador,
mas nesta reforma vamos reduzir o uso de chaves artificiais ao mínimo
necessário -- como, talvez, esta tabela de "pessoas".

Por enquanto, sem ter ainda me aprofundado nesta reforma (são centenas de
tabelas), acho difícil escapar de pelo menos três chaves artificiais: código
da pessoa, código do produto e número do pedido.


Em 4 de março de 2010 15:24, Osvaldo Kussama
<osvaldo.kuss...@gmail.com>escreveu:

> Em 4 de março de 2010 13:28, Alexsander Rosa
> <alexsander.r...@gmail.com> escreveu:
> >
> > Uma possibilidade é usar uma chave composta, tipo "CNPJ + chave extra"
> onde
> > esta chave extra tem NULL em todas as PF e quase todas as PJ. Quando uma
> PJ
> > pertencer a mais de um cliente (órgãos públicos, universidades, etc),
> esta
> > chave extra conterá um código (numérico? texto?) que identificará cada
> > unidade. Para escolas, poderia ser um código tipo INEP, por exemplo. Em
> > universidades poderia ser algum código que identifique o setor.
> >
> > Alguém tem alguma sugestão para isto?
>
>
> Apenas uma observação: uma chave primária não pode conter NULL em
> nenhum dos campos que a compõe.
> Não ficou claro se quando você diz "chave composta" está ou não se
> referindo a chave primária.
>
> Osvaldo
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>



-- 
Atenciosamente,
Alexsander da Rosa
Linux User #113925

"Extremismo na defesa da liberdade não é defeito.
Moderação na busca por justiça não é virtude."
-- Barry Goldwater
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a