Ao trabalhar em uma aplicação que combina bancos de dados MySQL e PHP, é normal pensar que tudo deve ser feito a partir do código. No entanto, não custa nada separar a lógica de programação da lógica de dados.
É por isso que os Procedimentos Armazenados (Stored Procedures) poderiam ser utilizados para evitar a sobrecarga do código e deixar toda a lógica dos dados para o SGBD (Sistema Gerenciador de Banco de Dados), sempre cuidando para segmentar corretamente o código. Para fazer isso, você pode usar o padrão MVC (Model - View - Controller) em PHP.
Como lá disse, um procedimento armazenado permite que o código SQL (consultas) seja salvo no SGBD, de forma que possa ser reutilizado com mais eficiência.
MVC
MVC (Model - View - Controller) é um padrão de design de software comumente usado para implementar interfaces de usuário, dados e lógica de controle. Ele enfatiza uma separação entre a lógica de negócios e sua visualização (Fonte: www.developer.mozilla.org/es/docs/Glossary/MVC).
Tecnologia que usaremos
Visual Studio Code.
MySQL (versión 8.0 de preferencia).
MySQL Workbench.
WampServer.
Bootstrap.
O funcionamento básico da aplicação em relação ao código é realizado sob a estrutura do padrão MVC com a linguagem PHP, que possui comunicação com cada uma de suas camadas.
A camada de modelo (M) terá comunicação bidirecional com os procedimentos armazenados e o banco de dados MySQL, da mesma forma que o roteador (roteador) servirá de ponte entre o controller e a view.
Vejamos a figura abaixo:
Para iniciar o pequeno projeto, é necessário ter criado um ambiente de servidor local com a ferramenta WampServer devidamente instalada e configurada. Se for necessária ajuda adicional para configurá-lo, assista ao vídeo a seguir.
Após configurar o servidor local, é necessário baixar e instalar a ferramenta MySQL Workbench para criar o espaço de banco de dados a ser utilizado no MySQL Server.
Dados para configurar a conexão do servidor local no MySQL Workbench:
Connection Name: (de preferência).
Hostname: 127.0.0.1.
Port: 3306.
Username: root.
Password: ****** (vazio por padrão).
Criação do banco de dados e tabelas
Em seguida, deve-se acessar a conexão configurada acima e criar o banco de dados e as tabelas necessárias, utilizando scripts com a ferramenta MySQL Workbench.
Para criar o banco de dados devemos executar o seguinte script:
CREATESCHEMA notas DEFAULTCHARACTERSET utf8; USE notas; DROPTABLEifexists notas; CREATETABLE notas( idnota INTnotnull AUTO_INCREMENT, autor varchar(20) notnull, titulo varchar(30) notnull, descripcion varchar(150) notnull, fecha_hora TIMESTAMPnullDEFAULTCURRENT_TIMESTAMP, PRIMARY KEY(idnota), UNIQUEINDEX index_titulo_unico (titulo ASC), INDEX index_autor (autor ASC) ) engine = InnoDB defaultcharacterset=utf8;
Execute o seguinte script para criar os procedimentos armazenados:
USE notas; dropprocedureifexists SP_Nueva_Nota; dropprocedureifexists SP_Obtener_Notas; dropprocedureifexists SP_Obtener_Nota_Por_Id; dropprocedureifexists SP_Modificar_Nota; dropprocedureifexists SP_Eliminar_Nota_Por_Id; #definimos delimitador delimiter // #store procedure para crear nueva nota createprocedure SP_Nueva_Nota( in prm_autor varchar(20), in prm_titulo varchar(30), in prm_descripcion varchar(150) ) begin insertinto notas(autor,titulo,descripcion) values(prm_autor,prm_titulo,prm_descripcion); end// #storeprocedure para obtener todas las notas createprocedure SP_Obtener_Notas() begin select * from notas; end// #storeprocedure para obtener nota por id createprocedure SP_Obtener_Nota_Por_Id(in prm_idnota int) begin select * from notas where idnota=prm_idnota; end// #storeprocedure para procedimiento para modificar notas createprocedure SP_Modificar_Nota( in prm_idnota int, in prm_autor varchar(20), in prm_titulo varchar(30), in prm_descripcion varchar(150) ) begin update notas set autor=prm_autor, titulo=prm_titulo, descripcion=prm_descripcion where idnota=prm_idnota; end// #storeprocedure para eliminar nota por id createprocedure SP_Eliminar_Nota_Por_Id(in prm_idnota int) begin deletefrom notas where idnota=prm_idnota; end//
Criação da estrutura de pastas
Na pasta que foi criada para o projeto no servidor local, use o Visual Studio Code para criar a seguinte estrutura de pastas:
Criar arquivos de configuração path e banco de dados
Para dar alguma segurança ao aplicativo, você pode usar o arquivo .htaccess e escrever as seguintes linhas de código:
#página de inicio DirectoryIndex index.php #acceso restrictivo a directorio principal Options All -Indexes
Para testar o aplicativo, acesse-o pelo navegador com a URL configurada anteriormente no arquivo Config.php.
Conclusão
Talvez uma das razões mais significativas para o uso do MVC seja a fácil organização do código (adaptável a diferentes frameworks atuais), sua escalabilidade potencial e a facilidade de trabalhar em equipe com outros desenvolvedores.
Em relação aos procedimentos armazenados no MySQL, o desempenho é melhorado com respostas rápidas e eficientes na aplicação, flexível na medida em que os dados podem ser acessados por diferentes aplicações e linguagens, não deixando de lado a modularização do código SQL.
Espero que este material tenha sido útil. Até logo.
Referências
Documentation. (n.d.). PHP. Retrieved January 27, 2023, from https://www.php.net/docs.php
Get started with Bootstrap · Bootstrap v5.3. (n.d.). Bootstrap. Retrieved January 27, 2023, from https://getbootstrap.com/docs/5.3/
Los procedimientos almacenados en MySQL y sus ventajas. (2017, November 23). VIU. Retrieved January 27, 2023, from https://www.universidadviu.com/es/actualidad/nuestros-expertos/los-procedimientos-almacenados-en-mysql-y-sus-ventajas
MVC - Glosario de MDN Web Docs: Definiciones de términos relacionados con la Web | MDN. (2022, December 5). MDN Web Docs. Retrieved January 27, 2023, from http://www.developer.mozilla.org/es/docs/Glossary/MVC
MySQL :: MySQL 8.0 Reference Manual. (n.d.). MySQL :: MySQL 8.0 Reference Manual. Retrieved January 27, 2023, from https://dev.mysql.com/doc/refman/8.0/en/
Rodríguez, F. (2022, July 13). Qué es la arquitectura MVC. KeepCoding. Retrieved January 27, 2023, from https://keepcoding.io/blog/que-es-la-arquitectura-mvc/
SQL Stored Procedures for SQL Server. (n.d.). W3Schools. Retrieved January 27, 2023, from http://www.w3schools.com/sql/sql_stored_procedures.asp
Stored Procedure Advantages | SQL Server Stored Procedure Basics. (2002, February 8). InformIT. Retrieved January 27, 2023, from https://www.informit.com/articles/article.aspx?p=25288&seqNum=3
💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.
A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.