Ir para conteúdo
Fórum Script Brasil
  • 0

Modelando no MySQL


Guest --Alex --

Pergunta

Guest --Alex --

bom dia

converti uma base access para my-sql. agora só tem um problema. preciso "otimizar" esta nova base.

é uma única tabela "Tab_Cadastro" e nela contem id, nome, nome-pai, nome-mae, telefone, local-cadastro e observações

no caso local-cadastro, foi o envento onde a equipe de marketing conseguiu captar o cliente.

sendo assim, tem eventos onde consegue captar 3000 novos clientes.

com isso, quero criar uma nova tabela "Tab_Evento", onde vai conter o id, nome-evento, data-evento e vlr-investimento.

dai vem as seguintes dúvidas:

1- como fazer para que nessa nova tabela eu recebe apenas 1 vez o evento "x" sem ser a digitação manutal

2- após isso, vou criar um campo novo na tabela "Tab-Cadastro" para a criação de uma chave estrangeira com a "Tab_Evento"... após isso, fazer a comparação ( linha a linha ) entre a "Tab_Cadastro" ( com o campo local cadastro ) e a "Tab_Evento" ( com o campo nome-evento ), para que seja preenchida da forma correta ( id ) e assim depois apagar o local-cadastro e assim otimizar meu BD.

Caso alguém possa me ajudar por email eu agradeço, caso precise de mais informações, fazer contato com alexblumer@hotmail.com.

Obrigado.

Alex M. Silva

Coordenador de Informática

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Oi, 'Alex M. Silva'!

Vamos por parte.

Primeiro vamos criar a tabela eventos:

CREATE TABLE eventos (
   idEvento integer unsigned not null auto_increment,
   nmEvento varchar(40) not null,
   primary key (idEvento)
);
Em Segundo Lugar vamos carregar os valores na tabela eventos a partit da tabela Tab_Cadastro
INSERT INTO eventos (nm_evento)
SELECT local_cadastro FROM Tab_Cadastro GROUP BY local_cadastro
Em Terceiro Lugar vamos abrir uma coluna na tabela Tab_Cadastro para armazenar os valores de idEvento
ALTER TABLE Tab_Cadastro
ADD COLUMN idEvento integer unsigned  not null default 0;
Em Quarto Lugar Vamos Carregar os valores de idEvento em Tab_Cadastro
UPDATE Tab_Cadastro c
SET idEvento = (Select idEvento FROM eventos e WHERE e.evento=c.local_cadastro);
Em quinto Lugar Destruir o campo Local_cadastro na tabela Tab_Cadastro
ALTER TABLE Tab_Cadastro
DROP COLUMN local_cadastro;

Pronto.

Uma dica: Estas operações não tem volta. Por tanto faça backup antes de começar e verifique o andamento após cada etapa.

Depois disso, se ainda houver dúvida, poste novamente.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...