Cuando se trabaja una aplicación combinando bases de datos MySQL y PHP es normal pensar que todo se debe hacer desde el código. Sin embargo, no está demás separar la lógica de programación de la lógica de los datos.
Es por esta razón que se podrían utilizar procedimientos almacenados para no sobrecargar el código y dejar toda la lógica de datos al SGBD (Sistema Gestor de Base de Datos), siempre teniendo el cuidado de segmentar correctamente el código. Para ello, se puede utilizar en PHP el patrón MVC (Modelo - Vista - Controlador).
Tal como lo dice, un procedimiento almacenado permite guardar el código (consultas) SQL en el SGBD, de tal manera que podría ser reutilizado de forma más eficiente.
MVC
MVC (Modelo - Vista - Controlador) es un patrón en el diseño de software comúnmente utilizado para implementar interfaces de usuario, datos y lógica de control. Enfatiza una separación entre la lógica de negocios y su visualización (Fuente: www.developer.mozilla.org/es/docs/Glossary/MVC).
Tecnología que emplearemos
Visual Studio Code.
MySQL (versión 8.0 de preferencia).
MySQL Workbench.
WampServer.
Bootstrap Framework.
El funcionamiento básico de la aplicación en relación al código se lleva a cabo bajo la estructura del patrón MVC con el lenguaje PHP, el cual tiene comunicación con cada una de sus capas.
La capa de los modelos (M) tendrá comunicación doble vía con los procedimientos almacenados y la base de datos MySQL, de la misma manera que el ruteador (router) servirá de puente entre el controlador y la vista.
Veamos la figura a continuación:
Creación de entorno servidor
Para iniciar el pequeño proyecto, es necesario tener creado un entorno servidor local con la herramienta WampServer debidamente instalada y configurada. Si es necesaria ayuda adicional para configurarlo, ve el siguiente video.
Después de configurar el servidor local, es necesario descargar e instalar la herramienta MySQL Workbench para crear el espacio de base de datos a utilizar en MySQL Server.
Datos para configurar conexión de servidor local en MySQL Workbench:
Connection Name: (de preferencia).
Hostname: 127.0.0.1.
Port: 3306.
Username: root.
Password: ****** (vacía por defecto).
Creación de base de datos y tablas
A continuación, se debe acceder a la conexión configurada anteriormente y crear la base de datos y tablas necesarias, utilizando scripts con la herramienta MySQL Workbench.
Para crear la base de datos debemos ejecutar el siguiente 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;
Ejecuta el siguiente script para la creación de los procedimientos almacenados:
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//
Creación de la estructura de carpetas
En la carpeta que se ha creado para el proyecto en el servidor local, emplea Visual Studio Code para crear la siguiente estructura de carpetas:
Crear archivos de configuración path y base de datos
Para darle algo de seguridad a la aplicación se puede utilizar el archivo .htaccess y escribir las siguientes líneas de código:
#página de inicio DirectoryIndex index.php #acceso restrictivo a directorio principal Options All -Indexes
Para probar la aplicación, accede desde el navegador con la URL configurada anteriormente en el archivo Config.php.
Conclusión
Quizás una de las razones más significativas por las que se utiliza MVC es la fácil organización de código (adaptable a diferentes frameworks de la actualidad), su escalabilidad potencial y la facilidad de poder trabajar en equipo con otros desarrolladores.
En cuanto a los procedimientos almacenados en MySQL, se mejora el rendimiento con rápidas y eficientes respuestas en la aplicación, flexible en cuanto que los datos pueden ser accesibles por diferentes aplicaciones y lenguajes, no dejando por fuera la modularización de código SQL.
Espero que este material haya sido de utilidad. Hasta pronto.
Referencias
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
💡
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Revelo.
Revelo Content Network da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.