Duvida relacionamento entre tabelas mySql

9 respostas
C

Pessoal, estou fazendo um projeto para desktop de cadastro de clientes, onde tenho alguns campo nome, endereço etc… e tenho campos como TELEFONE e E-MAIL que eu gostaria que fosse uma tabela separado, pois não queria definir uma quantidade ex: 3 email 2 telefone FIXOS ( pois podem ter casos que o clientes tenha mais).

1° Duvida;
Qual a melhor forma de relacionar a minhas tabelas? Com a chave primária da tabela cliente? se for assim, quando eu inserir um novo contato na tabela clientes, como a tabela Telefone reconhece o numero da chave primária.

2° Duvida;
Como na interface gráfica não sei quandos JtextFields preciso ter para telefone ou para e-mail, seria mais facil ter uma Jtable para esse campos?

Obs:

Pessoa não conheço de relacionamento entre tabelas, surgiu essas dúvidas mais vou procurar estudar mais sobre.

Valeu

9 Respostas

EHS

O melhor seria vc fazer uma tabela CLIENTE onde tem nome, endereço… e outra pode ser CONTATO onde tem os campos EMAIL e TELEFONE, daí o relacionamento vc faz que a tabela CONTATO tenha uma chave estrangeira, que é a PK da tabela CLIENTE.
Penso que não serie legal colocar um JTable, vc pode fazer assim, tipo 3 campos para telefone, um apra comercial, um residencial e um celular, e para email vc pode colocar uns 2 campos.

newbcc

Olá,

acredito que seria melhor e mais interessante em questão de desempenho, que nesse relacionamento CLIENTE X CONTATO seja do tipo 1…N, ou seja 1 CLIENTE pode ter N CONTATOS .

Não faz sentido ter uma tabela com 3 colunas para armazenar três tipos de telefones diferentes (casa, trabalho, celular). O valor é exatamente o mesmo, o quê diferencia é a contextualização desses valores.

Abs!

C

Então, o problema de deixar 3 campo para fone e 2 e-mail, que tem casos de clientes que possuem mais telefones ai não vou ter Jtextfield para mostrar esses dados.Pensei em lista pq pode ter um lista de telefones desse clientes.

O lance do relacionamento entendi Valeuu…

Quando eu for inserir um novo clientes por exemplo, ele vai gerar um chave primária desse cliente, depois que eu vou inserir o telefone da tabela ctto?

Isso vai ser em um comando só tipo. insere o cliente, pega o numero da chave primária que foi gerada e insere o telefone?

Valeu.

EHS

Isso mesmo, primeiro insere o cliente e depois pega a PK e insere os telefones e emails.

C

EHS,

Você saberia qual o comando eu uso para buscar o ultimo PK? uso o Mysql.

mais uma valewww!

newbcc

Caio,

se você estiver usando Prepared Statements, trabalhando com JDBC, você pode fazer um select na tabela e procurar pelo último registro inserido. Nesse caso de último registro, você coloca como pesquisa de campo, o nome da coluna que é PK. Por exemplo:

ResultSet rs = stm.executeQuery("SELECT * FROM CLIENTES");
 while (rs.next()) {
   if (rs.isLast()) {
     codigoPK = rs.getInt("NOME_COLUNA_DA_PK");
  }
}

Mas se você estiver usando Hibernate, parece que não, ele faria a persistência nas duas tabelas, mantendo o relacionamento para você, sem que você precise saber sobre o valor da PK gerada.

Abs!

C

Estou usando JDBC mesmo, valeu.
Vou fazer alguns testes aqui, qualquer coisa eu volto!

Valeu

C

O select blz entendi,

Só tenho uma dúvida meu formulário possui algumas Jtext para campos com apenas 1 dado, nome cpf Enfim…

No caso do telefone qual a melhor forma de fazer?

Não queria ter 3 jTextFields por exemplo pois se o usuário tiver 4 telefones só vou poder cadastrar 3.

Alguém tem alguma dica de como fazer o insert?

C

Pessoal estav olhando esse tutorial

http://www.guj.com.br/articles/147

Será que essa poderia ser a minha solução, criar um tablea DDD|TELEFONE ( EDITAVEL), onde eu cadastro a quantidade de telefones que ele tiver, depois guardo isso em uma ArrayList e depois jogo os dados da Array para o banco de dados. Acho que é possível não é?

Criado 2 de maio de 2011
Ultima resposta 4 de mai. de 2011
Respostas 9
Participantes 3