2010/1/4 Alexsander Rosa <[email protected]>:
> Isso me lembra aquela velha discussão sobre usar CPF/CNPJ como chave
> natural, o que é impossível porque inúmeros órgãos públicos compartilham o
> mesmo CNPJ.

Há vários motivos pelos quais CNPF ou CNPJ podem não ser chave natural
— a questão que se coloca é, justamente, de qual entidade?

Acho que eu mesmo já citei o caso de correntista de banco.  Há, por
exemplo, mulheres casadas que não têm CNPF, porque nunca tiveram vida
economicamente ativa, mas têm conta conjunta com o marido.  São
correntistas sem CNPF.

No teu caso, já poderíamos pensar numa entidade órgão público, que
certamente tem outra chave.  Talvez, várias entidades.  Se é prático
ou não separá-los numa base de dados, vai depender de muitas
variáveis, como dialeto SQL, implementação física, volume de dados,
tráfego de transações, ferramental de programação… mas, se não
analisarmos as entidades — e para isso chaves naturais são
indispensáveis, mesmo que acabem não sendo implementadas nalgum caso
extremo —, nunca entenderemos os problemas.


> Aqui no RS, por exemplo, simplesmente TODAS as escolas estaduais
> usam o CNPJ da Secretaria da Educação, não apenas a raiz, o CNPJ inteiro.
> Para o pagamento de empenhos os nomes das escolas precisam estar corretos
> até a última vírgula, não dá pra emitir a NF em nome da Secretaria e depois
> mandar entregar na escola.

No mínimo, há uma entidade escola estadual cuja chave não é o CNPJ.
Talvez o nome da escola, por exemplo (sei, sei, nome dificilmente é
boa chave, só para provocar a pensar), ou até o nome e o endereço.


> É muito mais simples usar um SERIAL para código
> de cliente do que tentar achar uma chave natural viável.

Sim, mas incorreto.

Sendo mais preciso, pode ser necessária uma chave artificial; mas não
tentar uma chave natural, mesmo que não seja declarada como a
primária, seria convidar problemas pela porta da frente.


> Sou totalmente a favor de chaves naturais, uso sempre que possível, mas há
> casos em que simplesmente não dá.

Não dá o quê?

Não dá para usar como chave primária, não estou preocupado.

Não dá para declarar, estou para ver um caso.


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

Responder a