Separar colunas de uma tabela do MySQL sem perder os dados

Amigos,

tenho um banco de dados feito em Access que possui uma tabela com 50 atributos. Isso mesmo!!! 50 atributos…

Bom, eu já consegui converter esta tabela para o MySQL sem problemas, só que fica bizarro deixar do jeito que está!

Gostaria de saber se é possível eu separar estes atributos sem perder os dados que neles estão…

Exemplo:

Tabela Funcionário possui os seguintes atributos:

  • nome
  • dataNascimento
  • hospital_nascencia
  • endereco
  • telefone
  • cpf
  • rg
  • titulo_eleitor
  • dependente
  • conjuge
  • cnh
  • … E assim por diante…

Teria algum software, algum modo de eu separar alguns atributos sem perder os dados que ali estão?

Muito obrigado amigos.

Tem. Mas dá trabalho.
O que você quer é “normalizar” as tabelas.
Primeiro, faça o modelo relacional do banco.
Segundo, crie as tabelas isoladas no mysql.
Terceiro, será preciso fazer selects obtendo apenas os dados que cada tabela terá, lembrando de manter os relacionamentos por chave primária e estrangeira.

Você quer normalizar uma tabela já existente, é isso?
Provavelmente é melhor você criar um modelo de dados decente para seus dados,e então criar algum script que permita a importação dos dados de forma que você consiga preservar a normalização.

Já vou avisando que “não perder os dados” é um mito.
Provavelmente haverá, quando você for fazer a normalização, alguma inconsistência, que deverá ser consertada antes ou depois de importar os dados.
O caso clássico é o de ter uma informação relativa a um cliente (telefone, por exemplo) que aparece atualizado em um registro e desatualizado em outro.
Provavelmente você terá de incluir no seu orçamento um tempo reservado para “limpeza” desses dados (ou seja, nesse malfadado caso do cliente, ficar telefonando para ele para poder fazer uma atualizaçaõ cadastral :frowning: )

[quote=drsmachado]Tem. Mas dá trabalho.
O que você quer é “normalizar” as tabelas.
Primeiro, faça o modelo relacional do banco.
Segundo, crie as tabelas isoladas no mysql.
Terceiro, será preciso fazer selects obtendo apenas os dados que cada tabela terá, lembrando de manter os relacionamentos por chave primária e estrangeira.[/quote]

Nunca o fiz… Muito obrigado amigo, tentarei pesquisar um pouco aqui… só tenho a agradecer, caso tenha algum material ou exemplo para me ajudar, agradeço mais ainda.

:smiley: :smiley:

Preste atenção no que o entanglement disse.
Como as informações não possuíam estrutura adequada, pode haver muito “lixo”. Isso significa desde dados desatualizados até mesmo dados duplicados (o mesmo CPF ou CNH para dois cadastros diferentes).
Ou seja, antes de pensar em fazer essa migração direta e total, talvez seja interessante manter essa base “suja” e outra “limpa” por um tempo.
Assim, quando um cliente que está na “suja” entrar em contato, basta atualizar a “limpa” com dados corretos.