Ir para conteúdo

POWERED BY:

Arquivado

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

Daniel-Lopes

Usar Procedure no Banco de Dados ou controlar tudo no PHP

Recommended Posts

Pessoal estou me preparando para desenvolver um sistema para empresa no qual eu trabalho. Decidir usar PHP pois o sistema funcionará de qualquer aparelho com acesso a internet (um dos requisitos do sistema) e estou usando o php pois tenho mais intimidade com esta linguagem que com java ou outra qualquer.

 

Como banco de dados vou usar o MySQL, foi uma decisão difícil pois poderia usar o PostgreSQL, mas optei pelo MySQL por conhece-lo melhor. E visando aperfeiçoar meu conhecimento nele fiz um treinamento e vi o quanto ela evoluiu e que não conhecia nem metade do que ela pode oferecer.

 

So que surgiu uma dúvida. depois que compreendi o uso de Procedures COMMITs e ROLLBACKs e trabalhar com transações, fiquei em dúvida qual é a melhoior maneira usar ao máximo as opções de transações no BD ou fazer tudo diretamente no PHP.

 

Um exemplo simples do curso, mas que me fez pensar foi o de uma transferencia entre duas contas, se fosse fazer no php eu tiraria de uma dando update nesta primera e colocaria em outra com outro update, mas vi que com transações do db você pode fazer usando apenas uma linha no php e ainda manter o controle e integridade do banco com COMMITs e ROLLBACKs

Aí pintou a dúvida sobre em qual nível eu controlo isso no próprio db ou no PHP

 

DELIMITER &&

CREATE PROCEDURE alteracao_saldo2 (c_origem char(10), c_destino char(10), v_val decimal(10,2))
BEGIN
 IF ((c_origem != '') AND (c_destino != '') AND (v_val > 0)) THEN
   UPDATE saldo SET saldo = saldo - v_val WHERE conta = c_origem;
   UPDATE saldo SET saldo = saldo + v_val WHERE conta = c_destino;
   COMMIT;
 ELSE
 SELECT "Todos os parâmentros devem ser informados!" AS "Mensagem";
 ROLLBACK;
 END IF;
END&&

DELIMITER ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Daniel-Lopes,

 

No lugar em que trabalhava tive uma experiência muito ruim utilizando PROCEDURES, mas acho que erramos na forma de utilização, pois qualquer interação simples com o Banco de Dados (INSERT,UPDATE) criávamos uma. Isso fez com que a manutenção ficasse lenta e difícil, pois toda a lógica ficava "escondida" nas PROCEDURES criando dificuldade no "debug" do sistema.

 

Acredito que as PROCEDURES se encaixam em tarefas complexas, que terão MUITA interação com o BD.

 

 

abs

Luiz Paulo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu aprendi a deixar as regras de negócio sempre em procedures pois o processamento do algorítimo lógico, geralmente é mais rápido no banco. Além disso vc reduz significativamente problemas com SQL Injection.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A camila disse tudo.

 

a procedure serve para criar regras de negócio, onde você teria lógica e algoritmos nela.

 

agora para um simples udpate, insert, delete é direto no PHP.

 

utilizar menor quantidade do servidor é muito bom mas uma sql simples é banal.

 

até selects cruzando 5, 6 tabelas é direto no PHP.

 

só se precisar criar regra mesmo que se utiliza a procedure.

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.