Como renumerar uma ID q é PK e FK?

Pessoal, eh o seguinte. tou fazendo uma conversao de dados. sao 5 bancos de dados em Firebird. to desenvolvendo um programa em JAva para fazer essa conversao.
bom, os bancos serao unidos em um só.

o proglema eh q na tabela [color=blue]Funcionarios[/color], o campo [color=green]funcionarios[/color], é a ID da tabela. e é tambem FK para a tabela Folha.

em nos bancos, que tem dados de diferentes locais, os codigos das ID’s sao iguais.
por exemplo: no banco 1 a ID 1 = fulano de tal
no banco 2 a ID 1 = Sicrano de tal

e eu preciso juntar tudo.
alguem pode me dar uma ideia de como eu faço pra poder renumerar esse codigo funcionarios sem perder o relacionamento nas outras tabelas???

Bom, eu to usando SQL pra fazer a busca dos dados no banco de origem , e usando ResultSet’s pra montar a minha tabela.

ah, so pra vcs entenderem melhor. a tabela [color=blue]Funcionarios[/color] é montada com base em uma tabela chamada [color=brown]cadastrodefuncionarios[/color] e a tabela [color=blue]folha [/color]é montada com base em uma outra chamada [color=orange]calculodefolha[/color]

Desde ja Agradeco as sugestoes

Olha, acho que não tem um método muito prático… Recomendo que você faça um algoritmo que pegue, por exemplo todos os funcionarios em todos os bancos e coloque em uma tabela só, então faça marcações (TEMPORÁRIAS!!!) que te formem um registro tipo:

Nome-------ID_BD_UNIFICADO-----------BD1---------BD2--------BD3-------BD4-------BD5
João--------5---------------------------------1------------8-----------15---------48---------2

Daí você vai remontando a tua base.

[quote=mauriciorocha665]Olha, acho que não tem um método muito prático… Recomendo que você faça um algoritmo que pegue, por exemplo todos os funcionarios em todos os bancos e coloque em uma tabela só, então faça marcações (TEMPORÁRIAS!!!) que te formem um registro tipo:

Nome-------ID_BD_UNIFICADO-----------BD1---------BD2--------BD3-------BD4-------BD5
João--------5---------------------------------1------------8-----------15---------48---------2

Daí você vai remontando a tua base.[/quote]

Tavlz nao seja exatamente isso. pq se eu fizer desse jeito ele nao vai unificar as ID’s?? eu nao posso unificar.
sao cadastro de funcionarios, nao posso perder nada. so preciso trocar as Id quando elas forem iguais.
tipo…
no banco 1 o ID 1 = fulano
no banco 2 a ID 1 sicrano,
o q eu qero eh q no banco Sicrano nao seja mais 1, seja um outro valor sacou?

eu poderia por um contador no banco 1 e apartir daí fazer… tipo…
se o banco 1 vai de 1 a 100, o banco dois vai ser de 101 a 200 scou?
mas o problema eh q desse jeito eu perco relacionamento… :shock:
putz… meu kblo ta caindo pq disso kkk- :slight_smile:

Bah kra, se você continuar com 5 bancos só te resta perder os cabelos mesmo… esse esquema é noção… mas o jeito provavelmente é tu fazer essa tua ideia de contador, porém dá um update na FK das tabelas q referenciam…

mas a ideia broder, eh unificar.
a empresa q prestava servido pra meu cliente antes q eh burra e fazia desse jeito. separou o cadastro por vinculo, e colocou cada vinculo em um banco de dados separado. e naos epreoculpou com a ID. agora to aki perdendo o resto dos cabelos q tenho. kakaka

oscabelos q ainda ficam na minha cabeça, ja estao se chamando herois da resistencia kakaka

hehe, ok. Mas se tu vai unificar tu vai ter q jogar todos estes funcionarios para uma tabela só em um banco só e depois refazer as referencias antigas para apontar para as novas referencias. Não vejo problema nisso, tu não vai perder nada pq as referencias antigas vao mudar para novas.

mas nao eh tao simples assim…

meu banco de dados apesar de ser em firebird, eh mto complexo, cheio de relacionamentos. por exemplo. isso daí q vc falou eu consigo fazer numa boa
mas na hora de inserir por exemplo a tabela folha, ela nao entra pq do relacionamento. o codigo do funcionario que tem na folha vai ser diferente do codigo q tem no cadastro do funcionario. o banco é cheio de FK’s e Check’s. nao entra…
eh mais complicado do q parece!!!

BD 1
Funcionario:
Fulano de tal - ID=1
Beltrano - ID=2

Folha
Folha1 - IDFunc = 1
Folha2 - IDFunc = 2
Folha3 - IDFunc = 2

BD 2
Funcionario:
Sicrano de tal - ID=1

Folha
Folha4 - IDFunc = 1

Unificado
Funcionario:
Fulano de tal - ID=1
Beltrano - ID=2
Sicrano de tal - ID=[color=red]3[/color]

Folha:
Folha1 - IDFunc = 1
Folha2 - IDFunc = 2
Folha3 - IDFunc = 2
Folha4 - IDFunc = [color=red]3[/color]

Qual é o problema nisso?

Tipo, você pode fazer isso:

  1. Copie e cole o primeiro BD no unificado.
  2. Vá acrescentando os registros do segundo BD um a um no BD unificado, rastreando os relacionamentos. Onde houver PKs repetidas, gere uma nova PK e altere todas as FKs que a referenciam para o novo valor gerado.
  3. Repita o passo 2 para o terceiro BD, para o quarto BD e depois para o último.
  4. Pronto. :smiley:

É um processo trabalhoso e complexo sem dúvida, mas o conceito é simples.