Octava Entrada de la Bitácora (4/26/26)

Hora de Inicio: 10:53 am

Hora de Fin: 4:58 pm

Cantidad de horas trabajadas: ~6 horas, bastante tiempo fue ver la clase de nuevo

Para esta entrada de la bitácora continúo trabajando en los requerimientos, y los siguientes son los relacionados a la tabla Empleado, R2, R3 y R4 son esencialmente un CRUD para Empleado, pero con algunos detalles extra, como los filtros, y el hecho de se menciona que no hay que utilizar los id, y que estos se deben mantener escondidos, la verdad esto no estoy seguro si quiere decir que tampoco se debe utilizar el id de Empleado en la lógica del backend, pero igualmente Nombre y ValorDocumentoIdentidad son únicos por la manera en la que funciona insertar y actualizar empleados, así que decidí utilizar los mismos para encontrar el Empleado. Todas las funciones relacionadas a Empleado las voy a hacer en un solo controlador, empleadoController.

Para hacer este CRUD en cuanto a la programación en JS/NodeJS no tuve que investigar mucho porque ya lo he hecho antes, incluso es bastante similar a lo que ya hice en la primera tarea programada, excepto que ahora hay que agregar más operaciones.Sin embargo, para los procedimientos almacenados en SQL, aunque el profe ya lo mencionó en clases pasadas, tuve que darle una repasada a como funciona el tema de encapsular transacciones en la base de datos, así que para esto volví a ver la clase, y además encontré una estructura para utilizar en Stack Overflow: SQL Transactions with Commit and Rollback - Stack Overflow.

Al ver la clase de nuevo me di cuenta de que mi idea original no funciona bajo el estándar ACID, particularmente la constantemente recalcada por el profesor, atomicidad, es decir, todo o nada, inicialmente se me había ocurrido hacer tres procedimientos almacenados simples que actualicen cada valor, es decir, el nombre, el documento y el puesto respectivamente, pero bajo el todo o nada, más bien si ocurre algún problema no se debería actualizar nada, lo cual, basado en la clase, se logra a través de un BEGIN TRANSACTION...operaciones de actualización...COMMIT.

En la clase además se menciona el orden de importancia, pero creo que para estas operaciones relacionadas a Empleado todavía no tendré que lidiar con eso.

Por otro lado, para algunos procedimientos usé INNER JOIN para obtener el nombre del puesto directamente, como referencia pondré la página de Microsoft Learn Joins (SQL Server) - SQL Server | Microsoft Learn, aunque mi formato está un poco distinto para estar más adecuado a los estándares del profe (o sea, usé paréntesis cuadrados y normales).

De hecho, aquí en la consulta para Empleado me surgió una duda sobre si debería solamente seleccionar los empleados donde EsActivo sea 1, pero no estoy seguro ya que si no se seleccionan todos entonces no se podrían ver en la interfaz, aunque quizás ese sea el propósito, y luego nada más se ve en la bitácora. En fin, de momento voy a hacer que solo se seleccionen los empleados donde EsActivo sea 1, ya que sería extraño mostrar los que ya fueron borrados, pero en caso de que esto no termine teniendo sentido conforme el proyecto avanza, simplemente le quitaré esa línea.

Revisando otras notas de clase vi que el orden de importancia es importante directamente en el orden de la tabla, pero en ocasiones el profesor ha mostrado modelos físicos que siguen el mismo orden que parezco tener yo actualmente, así que las voy a dejar así.

Por último, para los filtros tuve que investigar cómo filtrar de forma que al menos parte de lo que sería nombre o documento de identidad sea igual a lo que buscó el usuario, y lo que encontré fue la palabra clave LIKE.

SQL Query to Match Any Part of String - GeeksforGeeks

Revisando el front end que tenemos actualmente, tiene sentido igual mostrar los empleados que no están activos, ya que simplemente se cambian a mostrarse "inactivos", de forma que eliminé esa parte en el WHERE de los filtros y la consulta para obtener empleados.

Habiendo hecho el commit con todo lo relacionado a Empleado (asumiendo que funciona, de momento no he probado nada), finalizo esta entrada a la bitácora.

Comments

Popular posts from this blog

Sexta Entrada de la Bitácora (24/4/26)

Quinta Entrada de Bitácora (24/4/26)

Cuarta Entrada de la bitácora (21/4/26)