Eu criei uma banco de dados, dentro dele fiz as tabelas separadas por conta da normalização.
Agora já fiz a interface no netbeans, e nela os dados devem ser inseridos juntos. Como faço?
Ajudem por favor.
Obrigada.
[quote=Morena]Lina isso que você me mostrou eu entendi, e sei fazer más quando uma interface que tem somente os campo de uma única tabela.
Agora a minha intercafe tem dados de várias tabelas que eu preciso inserir de uma vez>
Será que eu devo fazer.
INSERT INTO Cliente VALUES -------
INSERT INTO Endreco VALUES -------
INSERT INTO Cidade VALUES -------
E assim por diante, enquanto eu tiver tabelas ?[/quote]
Oi,
Sim… crie um método Inserir(String comando) e o chame sempre que quiser dar um Insert. Quem sabe pode ser feito um relacionamento no próprio banco de dados, utilizando VIEW etc… porém não sei como está seu modelo/desenho/arquitetura de seu banco…
Bom. Tenho outra sugestão.
Vamos analisar a seguinte proposta.
Imagine que você vai ter inserir ‘de uma vez’, como você citou, dados de 100 tabelas. Nem preciso dizer que é totalemente insano fazer dessa forma que você citou.
Eu aconselharia que você fizesse um UNION, porém em uma única linha sql, unir todas as tabelas, ou seja criar uma tabela momentânea com todos esses dados, e assim mandar todos os dados de uma só vez.
Isso lhe pouparia tempo, sem sombra de dúvida.
Pelo que posso ver pelo nome das tabelas elas são dependentes entre si, se estiver enganado me corriga por favor, nesse caso ainda você tem chaves estrangeiras, assim para unir as tabelas que queres basta usar as suas respectivas relações.
... WHERE idCliente.CLIENTE = fkEndereco.ENDERECO;
Não pq a proposta do INSERT é inserir onde não exista algo.
Porém temos que ter a seguinte análise. Caso alguma das tabelas tenha dependencia de outra, nesse caso a outra tem que ter valor. Por exemplo.
Tabela Saci:
id:saci;
varchar: nomesaci;
Tabela AmigosDoSaci:
id:amigosDoSaci;
fk:saci;
varchar:nomeAmigoDoSaci;
Nesse exemplo, para eu inserir um amigo eu tenho que ter um saci cadastrado entende? Pois não tem como eu ser amigo de um saci que não existe em meu banco.
Obs.: Para que haja esses relacionamentos as suas tabelas devem ser InnoDB, pois elas lhe permitem criar esse relacionamento de dependencia.
A solução da nossa moderadora é boa,por um lado. Porém você vai ter que usar, por exemplo, 100 vezes o mesmo método e escrever 100 vezes as Strings SQL.
Dae fica complicado.
Acredito que dessa forma fica um ‘pouquinho mais complicadinho’, mas não impossível de se fazer, mais inteligente o código sql e mais fácil para fazer uma manutenção depois.
Uma última, antes de comer.
O Java é uma tecnologia incrível, porém as vezes queremos que ele nos faça tudo.
Eu vejo muitos casos aqui no fórum de pessoas que, por exemplo, quando querem achar o maior valor no banco, fazem um ResultSet, trazem esses valores e põe o Java para procurar esse valor máx da tabelas, sendo que ele poderia por o SQL para trabalhar e fazer todo o serviço sujo.
Mas que bom que compreendeu.
Estou na torcida para que consiga.
Abraço e boa sorte com o projeto.
[quote=edu_fernandes]A solução da nossa moderadora é boa,por um lado. Porém você vai ter que usar, por exemplo, 100 vezes o mesmo método e escrever 100 vezes as Strings SQL.
Dae fica complicado.
Acredito que dessa forma fica um ‘pouquinho mais complicadinho’, mas não impossível de se fazer, mais inteligente o código sql e mais fácil para fazer uma manutenção depois.
[/quote]
Oi,
Na realidade… não tinha entendido a pergunta dela por completo! A minha solução fica equivocada em relação a sua.
A idéia era criar um método insert para conseguir utiliza-lo em todo o código e para cada tabela em especifico…
A jogada do UNION deverá ser bem pensada e para que funcione as relações entre as tabelas devem ter coerência! Qualquer dúvida continue postando!