Jump to content
Renato Muniz

Melhor prática? criam campo Total ou fazer um join sum()?

Recommended Posts

Olá pessoal , sempre nas minhas tabelas nunca criei campo Total, nos casos tipo... tabela_venda e tabela_pedidos, o que eu faço é um join somando os campos valor*quantidade

daí é criado um campo "temporario" (Total)... correto?? pois bem, agora programando em java (spring) + JPA me deparei com problemas na hora de criar minhas classes anotadas como @Entity, pois esse campo "temporario" ta difícil de manipular na classe, pois na hora de persistir no banco ele o "JPA" tenta gravar esse campo "Total" tbm. Existe uma tag @transient  que inibe essa persistência no banco, ele retira da serialização, porém tbm nao consigo visualizar o conteúdo dele na view (no HTML), ou seja, ele nao carrega nos métodos get() vem sempre null!!

sei aqui é relacionado a banco de dados e acabei falando mais da linguagem do que o próprio banco, mas voltando ao assunto...

 

Vocês preferem criar o campo Total da tabela e assim ter a preocupação de sempre atualizar o campo ao incluir ou editar um valor da tabela Pedidos , ou preferem fazer um JOIN executando um SUM(), dessa forma nao precisando se preocupar com atualizações na tabela Vendas????

 

Citação

Certamente com o Join perco um pouco de performance, ou outro lado tenho a preocupação de ta atualizando o campo (total)

 

com o zendFramework (PHP) eu nao tinha problema nenhuma fazia o que queria "mandava e desmandava" :D  mas no "Spring" a coisa mudou!!

 

Qual a preferencia de vcs!! ??

 

obrigado!

Renato Muniz.

Share this post


Link to post
Share on other sites

Acredito que no seu caso seja melhor o campo Total, com mais fácil manipulação

Share this post


Link to post
Share on other sites
2 horas atrás, AmaandaSantos3 disse:

Acredito que no seu caso seja melhor o campo Total, com mais fácil manipulação

 

Obg por responder Amaanda, acho q assim seria mais complicado de manter nao?? me preocupar em atualiza o campo total , sempre que houver um insert ou update na tabela de produtos, apesar que na classe entity tem as tags preupdate e preinsert dai eu poderia tentar calcular e etc... mas da forma q implementei ficaria ruim dessa forma.

Obg

Share this post


Link to post
Share on other sites
16 hours ago, Renato Muniz said:

 

Obg por responder Amaanda, acho q assim seria mais complicado de manter nao?? me preocupar em atualiza o campo total , sempre que houver um insert ou update na tabela de produtos, apesar que na classe entity tem as tags preupdate e preinsert dai eu poderia tentar calcular e etc... mas da forma q implementei ficaria ruim dessa forma.

Obg

 

Eu pensei nessa forma, porque você pode perder esse dado com esse campo temporário, se seu sistema crescer, então uma forma de não perder esse dado seria criar ele real, mas aí se for uma coisa pequena usa o sum(), faz um teste com os dois, o que ficar melhor na sua necessidade usa, eu faço isso sempre, ajuda a saber o que realmente necessita 

 

Ps... Pesquisa mais sobre campos temporários e tabelas temporárias, que você pode achar um jeito de não perder esse dado, e usar o sum(), mas faz o teste que te falei ... :3 

Share this post


Link to post
Share on other sites
18 horas atrás, AmaandaSantos3 disse:

Acredito que no seu caso seja melhor o campo Total, com mais fácil manipulação

Oi Amanda, consegui contornar separando as tabelas mesmo, tirei o join da tabela "PAI" e fiz um filtro separado com a tabela "FILHA"

daí no controller deu FOR ( entity) somando manualmente e depois dei um setTotal() e enviei pra View. o que mudou pra ficar mais pesado é quantidade de vezes que preciso ir no banco de dados, com o join era uma instrução só!!

por enquanto vou deixar assim, pra dar continuidade no projeto, mas depois vou melhorar esse trecho!!

Obg!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By MarcosxEduardo
      Olá.
      Eu instalei um site na minha hospedagem.
      Criei a DB e o usuário, dando todas as permissões e conectei essa DB ao site.
       
      Mas quando vou entrar aparece a seguinte mensagem:
      Fatal error: Call to undefined function mysqli_connect() in /home2/public_html/database/DB.php on line 34
       
      alguém sabe que possa ser ?
       
    • By Camilavip
      Queria saber como fazer esse select e quando eu trazer um estado ele já puxa as cidades contidos nele, e ao escolher a cidade ele trazer os bairros. Consegui pela internet mas só com estados e cidades. no caso em 2 níveis, e eu precisaria em 3, faço pelo mysqli
       
      Em estados no banco está assim
      CREATE TABLE `estados` ( `id_estado` int(10) NOT NULL, `estado` varchar(30) NOT NULL ) ENGINE=Aria DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `estados` -- INSERT INTO `estados` (`id_estado`, `estado`) VALUES (1, 'Rio de Janeiro'), (2, 'Minas Gerais'); Cidades
      CREATE TABLE `cidades` ( `id_cidade` int(10) NOT NULL, `id_estado` int(10) NOT NULL, `cidade` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `cidades` -- INSERT INTO `cidades` (`id_cidade`, `id_estado`, `cidade`) VALUES (1, 1, 'Rio de Janeiro'), (2, 2, 'Belo Horizonte'); E bairros
      CREATE TABLE `bairros` ( `id_bairro` int(10) NOT NULL, `id_cidade` int(10) NOT NULL, `bairro` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `bairros` -- INSERT INTO `bairros` (`id_bairro`, `id_cidade`, `bairro`) VALUES (1, 1, 'Centro'), (2, 1, 'Tijuca'), (3, 1, 'Leblon'), (4, 2, 'Pampulha');  
    • By danilo759
      Estou com uma dúvida, em uma tabelinha é cadastrado a data em uma coluna e a hora em outra coluna, então para "juntar" podemos usar CONCAT() no SELECT. Tudo certo...
       
      SELECT id, CONCAT(data_ini, ' ', hora_ini) as inicio FROM tabela

      Retorna como esperado:

       

      Minha dúvida é, se eu quiser exibir o horário de término para ficar assim como seria a consulta? Lembrando que não existe as colunas data_final e horario_final.

      2020-09-13 03:00:00 2020-09-13 04:00:00
      2020-09-13 04:00:00 2020-09-13 05:00:00
      2020-09-13 05:00:00 ....
    • By slaoxx
      Não conseguir obter êxito, minha sintaxe foi a seguinte:
       
      CREATE FUNCTION precomed ()
      RETURNS decimal
      SELECT AVG(preco_cd);
       
      SELECT precomed ();
       
    • By reginaldo.sacramento
      Tenho a tabela usuário ( id, nome, celular ) e logs ( id, data )
      Aí se eu faço um CONSTRANT.. ficaria
      Usuário ( id, nome, celular )
      Logs ( id, data, id_usuario )
      Como eu faria um insert (e depois um UPDATE ) na tabela Logs ?
      Como capturo essa alteração em log? 
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.