GARANTIR DESCONTO

Fórum Do que vale autoincremento se não é autodecremento? #271253

07/03/2005

0

Estou trabalhado com o FB em um sistema com 40 tabelas que estou importando uma a uma do meu cliente (Access: do cliente).
Cada tabela possui um campo integer chave primária e lógico, auto incremento também...

Sei também que em cada tabela, se eu eliminar o campo auto incremento eu poderei usar outro campo tipo string como chave primária...

Hipoteticamente sabemos que, se postarmos 3 registros será gerado o: 1-2-3 (incremento)
Agora, se deletarmos o ítem 2 fica: 1-3, ou seja, forma-se uma sequência disforme e não é realizada uma reordenção numérica: Deveria ficar 1-2. E para existir uma reordenção ... só com um scan na base toda... tarefa que está radicalmente descartada à ser feita, pelo simples motivo de ter que percorrer toda a Base...

Gostaria de conselhos sobre isso...


Nerdex

Nerdex

Responder

Posts

07/03/2005

Lucianopimenta

Ola Nerdex,

Essa dúvida eh muito comum. Imagine que o banco faça o que vc quer, reordenar para 1-2, os registros 1-2-3 quando vc deletar o 2, por exemplo. Mas e se essa tabela fizer referencia a outra e esse código for uma chave estrangeira em outra tabela, a reordenação tbm deverá ocorrer nessas tabelas, ou seja, muito processamento.
Então sempre será melhor vc ter uma tabela com os registros 1-3-4-6-7-9, mas que está relacionada corretamente com outras.
Espero ter sido claro pra responder a sua dúvida.


Responder

Gostei + 0

07/03/2005

Maurício Santos

Olá!!!

Qual a real necessidade de se aproveitar um número já excluido?

Maurício


Responder

Gostei + 0

07/03/2005

Nerdex

Agradeço tua resposta caro Luciano... (ex-colega da UNIFRA)... daee

Maurício para mim é uma questão de indexação, qualidade, harmonia e performance... concordo claramente de que um número já excluído não é mais aproveitável... mas praticamete, eu não gosto da idéia da existência de um queijo suíço ou um HD com dados completamente fragmentado...

Acredito que o auto-incremento cai bem para aplicações no comércio: Tipo emissão de nota fiscal e vendas de produtos. Fatos que certamente não serão eliminados... e se for, somente em um balanço anual... de uma loja, no caso... entende...


Responder

Gostei + 0

07/03/2005

Beppe

Claro que dá pra repovoar os buracos, basta manter uma tabela com os IDs excluídos, usando generator apenas se ela estiver vazia.


Responder

Gostei + 0

07/03/2005

Bruno Belchior

cinceramente discarto o auto incremento do Firebird (até porque todos sabemos que na verdade não há auto-incremento mas sim uma emulação criada...) tenho minha classe especial feita somente para tratar chaves primárias que uso como auto-incremento em um campo VarChar, mas nem por isso livro-me da desordenação dos índices visto que tbm não vou varrer todo o BD para reorganizar...


Responder

Gostei + 0

07/03/2005

Bon Jovi

Crie um campo a parte fazendo o q quiser com ele.

CREATE TABLE TABELA
(
ID_TABELA DECIMAL(5) NOT NULL PRIMARY KEY, /* nunca alterar */
NUM_ORDEM DECIMAL(5) NOT NULL UNIQUE /* reorganize a vontade */
)


Responder

Gostei + 0

08/03/2005

Carlosrm

Beppe,

obrigado. Sua sugestão foi ótima também para mim!

carlosrm :wink:


Responder

Gostei + 0

08/03/2005

Nerdex

[size=18:82c70c5d2f]Valew Beepe...! - Repovoar IDs excluídos é a idéia dá hora![/size:82c70c5d2f]
Solução simples, amigável e importantíssima...


Responder

Gostei + 0

08/03/2005

Bruno_orderby

Galera.....
particularmente não gosto de escluir meus dados da tabela, pro isso tenho sempre um campo chamado excluido do tipo char que altero pra S ou N se o registro foi ´deletado´ pelo usuario ou não, e para visualização dos dados pra não ficar lento não exibo tabelas apenas as views.....

Assim sempre mantenho integridade, com a opção de uma futura restauração em dados que o cliente queira novamento sem ter de fazer backup......


Abraço......


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar