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

Entradas populares