Seguinte, vou colocar uma modelagem problema aqui:
Temos uma tabela (tipo entidade) cuja estrutura contem as seguintes colunas (campos) e alguns registros (tuplas) preenchidos de exemplo:
Classe Sequencial --------------------------------- Azul 0001 Azul 0002 Verde 0001 Verde 0002 Verde 0003 Vermelho 0001 Vermelho 0002 Vermelho 0003
Veja que este simples exemplo abstrai problemas especificos que podem exigir situação similar. Então temos o caso de um par de campos que formam uma identidade, talvez chave primária composta, onde a classe ou categoria é um campo que vem do problema e temos um campo sequencial... Vamos lá, se tivessemos uma classe só poderiamos usar um campo auto incremento, ou sequences/generators... o problema é que esse campo precisará ser sequencial por classe.
Podemos resolver este problema com diversas abordagens, me ocorreu 4 até o momento. Select Max / Multiplos Generators-sequences / Um generator modificado conforme a necessidade / uma tabela para controlar os incrementos. Não vou dar todas as informações sobre essas soluções pois este modelo deve ser também um desafio... mas devo colocar que as soluções devem ser comparadas quanto a velocidade, custo de implementação, custo de manutenção e principalmente, quanto a concorrência.
No seu SGBD preferido, como você resolve(ria) este tipo de situação? O porque você escolhe essa abordagem? É essa a discussão que eu quero propor.
Finalizo com uma pergunta. Seu SGBD tem algum recurso legal pra isso?
Eu gostaria do seguinte:
Ex com Oracle:
SEQ_CORES.NEXTVAL_FOR('Verde'); // é como se fosse um vetor de geradores, mas DDL é uma instrução só... DML para adicionar classes no gerador
Ex com Firebird/Interbase
GEN_ID(GERA_CORES, 1, 'Verde');
Bons estudos











