[firebase-br] Idéia para montagem de prefixos para códigos

Eduardo Jedliczka jedyfb em gmail.com
Ter Maio 19 23:52:38 -03 2009


Já acompanhei alguns projetos que trabalhavam com grupo e sub-grupo na
codificação dos produtos (codificação alfa-numérica ou composta)

Na minha opinião, uma boa solução seria gerar uma PK por um código
sequencial (generator alimentando um ID interno usado para referenciar
este produto) e usar um outro campo para o código visualizado no
sistema, garantia de boa performance em selects e updates, e ainda
agrada ao cliente.

Para isto funcionar, seria bom criar um unique index no campo código
(mas deixá-lo aceitar null para não dar muita dor de cabeça durante o
cadastro) e usar uma tabela em separado para controlar a sequencia dos
códigos de cada grupo/família.

Com esta abordagem pode-se inserir os produtos sem se preocupar com o
código (gravando o campo como null) e usar uma transação em separado só
para gerar este código (assim seria muito rápida e reduziria a
possibilidade de duas transações obter o mesmo código) com um COMMIT o
mais rápido possível. Se por um azar duas pessoas cadastrarem "ao mesmo
tempo" um novo produto na mesma família, apenas um irá ter sucesso pois
o unique index no campo fará uma delas dar erro, aí é só repetir o
processo para obter um novo código.

Se não deseja utilizar uma tabela complementar, dá para usar um "Select
max(codigo) from tabela where codigo starting with :grupo" que terá um
bom desempenho por culpa do unique index.

claro que esta é a minha opinião, e é bem provável que existam soluções
melhores.

Sucesso,

Eduardo Jedliczka


Em Ter, 2009-05-19 às 23:40 -0300, Marcelo Geyer escreveu:

> >
> > Pra entender melhor o problema:
> > Qual é a necessidade por trás disso?
> 
> O usuário precisa lembrar destes códigos de produto?
> > Porque eles precisam ser "bonitos"?
> 
> 
> Foi só um exemplo, mas a idéia de utilização de prefixos vem da necessidade
> de uso da empresa.
> 
> >
> >
> > Porque não usar o prefixo com um único generator? CM001, CM002, RP003,
> > etc...
> 
> 
> É uma opção que já cogitei também e está tomado nota, porém não adotei
> ainda.
> Sugestões são bem vindas!
> 
> >
> >
> > hth,
> > --
> > Douglas Tosi
> > www.sinatica.com
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> 
> 
> 



Mais detalhes sobre a lista de discussão lista