Comentários no texto.

2010/1/7 Leandro DUTRA <leandro.gfc.du...@gmail.com>

> 2010/1/4 Alexsander Rosa <alexsander.r...@gmail.com>:
> > 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?
>
> A entidade "cliente", por exemplo. Ou quem sabe, "fornecedor". Talvez
exista uma entidade "pessoa" que contém apenas os dados básicos (nome,
cpf/cnpj, etc) e as demais, como "cliente", "fornecedor", "funcionário", etc
sejam especializações. De qualquer forma, não é prático usar, digamos, o
nome completo (+ nome da mãe para o caso dos homônimos): imagine um setor da
empresa conversando com outro, por telefone, sobre um cliente específico.
Além do tempo perdido ditando nomes potencialmente extensos, podem haver
clientes homônimos ou mesmo com grafia ou sonoridade similar. Um código
numérico faz muito mais sentido.


> 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.
>
> Tradicionalmente as empresas criam um "código de cliente" para cada cliente
mas permitem que eles cheguem no balcão munidos apenas com o CPF e localizem
seu registro. A chave natural não deixa de existir, apenas não é primária.


> > 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.
>
> Indo por este caminho acabaríamos criando entidades para escolas (cuja
chave primária pode ser o código INEP, como foi dito aqui), agências dos
correios (cada agência tem seu número), agências de alguns bancos públicos
(nº do banco + nº da agência), sedes do SESC (deve haver algum código que
eles usam) e assim por diante.


> > É 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.
>
> Mas este é o processo: tentar em primeiro lugar uma chave natural como
chave primária. Mantenho o uso de chaves artificiais dentro do mínimo
necessário. Outro exemplo é o de código de produto: há quem use código de
barras como chave primária, mas nem todo produto tem código de barras.
Alguns são tão pequenos que é impossível sequer colocar uma etiqueta ou
similar, e outros ainda são adquiridos do mesmo fornecedor com códigos de
barras diferentes, por motivos que vão desde erro de impressão da embalagem
até origens diferentes.


> > 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.
>
> Eu me refiro a "usar como chave primária".

-- 
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