Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

erison

estoque de produtos

Recommended Posts

estou com 3 tabelas

 

entrada

saida

devolucao

 

calculo

 

entrada-(saida+devolucao)

 

duvida é

 

na minha tela de movimento

 

devo apenas

fazer o select

 

ou sera melhor criar uma outra tabela ai quando houver alguma alteração nas outras 3 altar o valor nela ?

 

 

 

 

 

pq assim, acho que com o passar do tempo a consulta vai demorar pq o select vai fazer esse calculo

e tem ineer join e tudo mais.

 

e fazendo trigger vou apenas fazer um simples select na tabela de movimento.

 

 

ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá! Poderia colocar a estrutura das tabelas e também como seria a tela de movimento?

 

Se as 3 tabelas forem em formato de histórico e a tela de movimento também seja um tipo de histórico do item, creio que não haja necessidade de criar novas tabelas/campos.

 

Se caso a tela em questão seja de itens vs. quantidades imagino que seja interessante colocar um campo de quantidade atual no item.

 

Espero ter ajudado! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

assim por que como são 3 tabelas

entrada, saída e devolução

 

para mostra o estoque vou usar um select um pouquinho grande.

com 3 sum

 

e assim no começo beleza, mais com o passar do tempo for tipo, 1 milhão de registro em cada tabela.

 

esse calculo vai demorar.

 

sera que colocar esse select em uma visão, vai se tornar mais rápido?

 

tambem pensei em colocar uma tabela para movimento

ai quando for editando, inserindo ou deletando(nas 3 tabelas: entrada, saída e devolução) vai disparando . iria fazendo os cálculos

 

ai quando fosse exibir iria ficar bem mais rápido por que iria apenas fazer um select simples.

 

mas também poderia ocorre erros. vai por uma conhecidencia a trigger não dispara coisa assim pode da o resultado errado.

 

mas se alguém tiver alguma outra dica avisa ai . :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

com ela o PHP não vai perder tempo com os join's, você vai fazer um select comum como se a junção de suas tabelas fossem uma tabela, porém cada vez que atualizar as tabelas a view já puxa o dado novo.

 

muito rápido cara.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu sei eu não estou fazendo nenhum calculo no php e tudo no banco.

 

a demora que eu falo e o banco fazer esse calculo com muitos registros



certo mais a visão ela quando eu chamar ela.

 

ela vai fazer o calculo ne não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, a view nada mais é que o mesmo select que você faria na tela

 

A diferença é que isso você vai jogar em "outra tabela" no caso a view que não é outra tabela de fato

 

e a consulta é

 

 

 

select * from minhaView

sem aqueles join, assim esse trabalho fica para o banco de dados deixando o php muito mais leves.

 

para seus registros ficarem lento precisa ter muitoooooooos, muitos mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo mais ai tem outro problema.

 

pq ai quando for da insert ou update ou delete vai demorar mais.

pq alem de alterar nas tabelas tem que alterar na views ou seja refazer os calculos

Compartilhar este post


Link para o post
Compartilhar em outros sites

A view fica faz tudo sozinha depois de pronta.

 

Você faz UPDATE, INSERT E DELETE nas tabelas normalmente e é ai que entra a mágica da VIEW, ela já assimila todos esses dados sem a necessidade de você reprocessar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu entedie. mais para meu caso não funcionar muito bem por que vamos usar mais as 3 tabelas do que a consulta da view.

por que depois de ter muitos registros, vai demorar quando for meche nas tabelas

 

pq ela só vai retornar quando alterar na view

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro eu não entendi nada, segundo uma das funções que surgiu a view foi essa.

 

por que se você cruzar 3 tabelas e mandar executar essa query no php certamente demora, já uma sql direto que é na view da certo.

 

Banco de dados não fica lento cara, você terá 500 mil registos? procure oracle, SQL. join são um pouco lento mesmo você pode cruzar as tabelas de outros jeito.

 

muita coisa influência.

 

Obs: Eu trabalho com view e deixo 300, 400 mil dados e roda que é uma beleza, pode pesquisar que é o caminho certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo mais se eu for dar um insert em uma das tabelas não vai demorar inserir?

Compartilhar este post


Link para o post
Compartilhar em outros sites

por que quando inserir ou alterar em uma das tabelas(entrada,saida ou devolução), vai demorar por que a view vai fazer todo o calculo dinovo.

 

vamos supor que seja um estoque que tenha muito entrada e saida de produtos.

vai demorar muito por que a view vai ta sempre sendo chamada. e fazendo o calculo entende

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu sistema é para gerenciamento de estoque, planejamento.

 

Eu tenho histórico de 5 anos de transação diária de uma empresa fazendo alguns cálculos, e tudo isso em cima de uma view.

Empresa grande.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colega,

 

Irei lhe dar uma dica que de certa forma irá aumentar a produtividade e a eficácia de seu sistema.

 

Você poderia fazer isso com apenas duas tabelas, uma para gravar o histórico do item e outra o item em sí e seu status.

 

Na hora de adicionar o produto, é criado um registro, dizendo qual produto, data e o que foi feito (add, excluiu ou editou), já para os clientes, na hora da compra, é também criado um registro informando que foi comprado, se foi devolvido, a mesma coisa.

 

Dessa forma você consegue colocar em apenas um lugar qualquer tipo de log, além claro, de manter o status como quiser do produto, sendo ativo, inativo, fora de estoque, etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

para fazer certo mesmo eu começaria do banco... fazendo da forma correta em uma tabela só

mov

 

 

 

CREATE TABLE IF NOT EXISTS `mov` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `produto_id` int(11) NOT NULL,
  `operador` varchar(1) NOT NULL,
  `quantidade` int(11) NOT NULL,
  `data_registro` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;


--
-- Extraindo dados da tabela `mov`
--


INSERT INTO `mov` (`id`, `produto_id`, `operador`, `quantidade`, `data_registro`) VALUES
(1, 12, '+', 100, '2013-02-08 19:13:40'),
(2, 12, '+', 50, '2013-02-08 19:13:40'),
(3, 12, '-', 3, '2013-02-08 19:14:02'),
(4, 12, '-', 23, '2013-02-08 19:14:02'),
(5, 12, '+', 20, '2013-02-08 19:38:03');

 

Depois de criada a tabela acima,,, vamos criar a VIEW que vai segurar os valores

 

 

 

CREATE VIEW movimenta as SELECT (SELECT SUM(quantidade) FROM mov WHERE operador = '+' ) as positivo, (SELECT SUM(quantidade) FROM mov WHERE operador = '-') as negativo FROM mov LIMIT 1

 

Pronto bem simples.... agora só aplica o select abaixo

 

 

 

SELECT  (positivo - negativo) as totalEstoque FROM movimenta 

 

Lembrando que não usei condições mas para controlar por produto vc deve usar WHERE produto_id = "id do seu produto"



Vale lembrar caso você não saiba como funciona uma VIEW no SQL.. ELA CRIA UM tabela com base em uma consulta... e toda vez que um novo registro for adicionado a tabela de origem o valor já é atualizado direto na VIEW ou seja.. muito mais simples, fácil, rápido!



A view fica faz tudo sozinha depois de pronta.

 

Você faz UPDATE, INSERT E DELETE nas tabelas normalmente e é ai que entra a mágica da VIEW, ela já assimila todos esses dados sem a necessidade de você reprocessar.

 

cara vc ta certo... esse cara fica querendo fazer as coisas de forma amadora e falando de tamanho para uma coisa tão simples... eu tenho consultas de 18 ou 20 linhas que rodam tão rápido como qualquer outra...

 

Vc ta certo a solução mais simples e profissional é uma VIEW e fazer tudo em uma tabela só!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.