Avance #2 - Segunda Tarea Programada BD1
Sesión 2: 7 de Octubre 2025 (2 horas)
Desarrollo de la estructura base de datos y primeros SPs
Trabajo realizado:
- Diseño del modelo físico de base de datos basado en los requerimientos del proyecto
- Se crearon las tablas: Empleado, Puesto, TipoMovimiento, Movimiento, Usuario, TipoEvento, BitacoraEvento, DBError, Error
- Implementacion de las relaciones FK siguiendo el diagrama conceptual de clases
Desarrollo el SP SP_InsertarEmpleado con validaciones completas:
- Documento identidad numérico
- Nombre alfabético con soporte para acentos
- Validación de unicidad de cédula y nombre
- Manejo de transacciones y bitácora
Problemas encontrados:
- Dificultad inicial con la sintaxis de validación de caracteres en SQL
- Confusión en el manejo de parámetros OUTPUT entre diferentes SPs
- Solución aplicada:
IF (@inNombre LIKE '%[^A-Za-zÁÉÍÓÚÜÑáéíóúüñ -]%')
BEGIN
SET @outResultCode = 50009;
RETURN;
END;
Sesión 2: 8 de Octubre 2025 (2 horas)
Implementación del sistema de bitácora y manejo de errores
Trabajo realizado:
- Desarrollo de SP_RegistrarBitacora para trazabilidad completa del sistema
- Implementacion de DBError table para capturar errores de SQL Server
- Creacion de el catálogo de errores personalizados (50001-50011)
- Configuracion del estándar de codificación SQL según los apuntes de clase
- Ajuste todos los SPs para usar @in y @out en parámetros
Código mejorado:
BEGIN TRY
BEGIN TRANSACTION;
-- Lógica del SP
COMMIT TRANSACTION;
SET @outResultCode = 0;
END TRY
BEGIN CATCH
IF (XACT_STATE() <> 0) ROLLBACK TRANSACTION;
SET @outResultCode = 50008;
INSERT INTO dbo.DBError (...) VALUES (...);
END CATCH;
Sesión 3: 9 de octubre 2024 (2 horas)
Desarrollo de SPs de actualización y eliminación
Trabajo realizado:
- Implementacion SP_ActualizarEmpleado con validaciones de duplicados excluyendo el registro actual
- Desarrollo de SP_EliminarEmpleado con borrado lógico (campo EsActivo)
- Se agrego la bitácora específica para cada operación según requerimiento R7
- Se hicieron pruebas de exhaustivamente los casos edge (documentos duplicados, nombres inválidos)
Problema crítico resuelto:
En SP_ActualizarEmpleado, la validación de duplicados incluía el registro actual, causando falsos positivos.
Solución:
IF EXISTS (
SELECT 1
FROM dbo.Empleado
WHERE ValorDocumentoIdentidad = @inValorDocumentoIdentidad
AND Id <> @inId -- ← EXCLUIR REGISTRO ACTUAL
AND EsActivo = 1
Sesión 4: 10 de octubre 2024 (1.5 horas)
Integración y pruebas del módulo empleados
Trabajo realizado:
- Creé script de pruebas automatizadas para todos los SPs
- Validé el flujo completo: Insertar → Actualizar → Eliminar
- Verifiqué que la bitácora capture todos los eventos correctamente
- Documenté los códigos de error y sus significados
Comentarios
Publicar un comentario