Segunda Entrada de la Bitácora (5/6/2026)

Hora de inicio 1: ~7:00 pm (5/6/2026)

Hora de fin 1: ~8:30 pm (5/6/2026)

Hora de inicio 2: ~11:00 am (6/6/2026)

Hora de fin 2: ~7:00 pm (6/6/2026) -- aclaro que no fueron 8 horas seguidas, tuve varias pausas, además bastante rato fue revisar clases anteriores (la 21/22 sobre todo, aunque también revisé pedazos de otras)

Cantidad de horas trabajadas: ~6

Para esta entrada de la bitácora, primero me dediqué a leer el documento del proyecto para analizar todas las tablas que debería crear, para comenzar a darle estructura a la parte del servidor/SQL.

Al leer el documento me di cuenta que se mencionan varias tablas de forma bastante directa, además los datos del XML pueden funcionar un poco como guía inicial, sin ser directamente un ejemplo del modelo, ya que como dijo el profe en varias clases, el XML no es un ejemplo del modelo de la base de datos, un XML perfectamente podría tener datos estructurados de forma diferente al modelo de mi base de datos, y la idea es precisamente adaptarlos al modelo de la base de datos, sin ignorar información.

Entonces inicialmente, tomando en cuenta diagramas que ha hecho el profesor en clases, como los siguientes:

(clase 22)

(clase 21)

Y este otro diagrama que hizo el profe después de que le preguntaran sobre este tema en una clase presencial:


Considerando que el profe durante el semestre y sobre todo ahora le ha dado mucho énfasis a la normalización, pensé que lo mejor sería algo como el A que había hecho inicialmente el profe en la clase 21, que luego expandió en la clase 22, además, para evitar nulos y normalizar de la mejor forma estas fueron las tablas que se me ocurrieron:

DBError, BitacoraEvento, MovimientoHoras, MovimientoDeduccion, MovimientoPlanilla, MarcaAsistencia, JornadaXEmpleadoXSemana, DeduccionXEmpleadoXMes, DeduccionXEmpleadoFija, DeduccionXEmpleadoPorcentual, DeduccionXEmpleadoInactiva, DeduccionXEmpleado, PlanillaSemXEmpleado, PlanillaMesXEmpleado, SemanaPlanilla, MesPlanilla, Impersonacion, UsuarioEmpleado, UsuarioAdministrador, Empleado, Usuario, Feriado, DeduccionLey, DeduccionNoObligatoria, TipoDeduccion, TipoMovimiento, TipoEvento, Puesto, TipoJornada

Para estas tablas tuve que investigar algunas cosas, por ejemplo aprendí sobre los unique constraints, y que al parecer se nombran como AK (Alternate Key) según https://learn.microsoft.com/en-us/sql/relational-databases/tables/create-unique-constraints?view=sql-server-ver17

Además, en el proceso me estaba medio confundiendo y me estaba perdiendo sobre cómo se deberían relacionar las tablas, así que hice un diagrama rápido, aunque realmente está incompleto, porque en el momento no había visto la clase 21/22 donde el profe daba más detalles sobre las subclases de TipoDeducción, y las relaciones simplemente son líneas y no tiene cardinalidad, insisto, era puramente para guiarme un poco porque me estaba perdiendo con tantas tablas, pero lo dejo aquí ya que fue parte de lo que hice:


Finalmente, cree la base de datos, agregué mi usuario y el de mi compañero para que podamos trabajar en la base de datos directamente con los usuarios, e hice el commit con las tablas que hice de momento. No estoy seguro si voy a tener que cambiar cosas, pero de momento eso fue lo que hice, y por último me dediqué a hacer algunos "bocetos" de los SPs, pero tengo que investigar sobre el trigger que debe asociar automáticamente las deducciones obligatorias cuando se inserta un empleado.

De momento dejo algunas referencias que estuve leyendo

https://learn.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql?view=sql-server-ver17

https://www.sqlshack.com/triggers-in-sql-server/

https://learn.microsoft.com/en-us/sql/relational-databases/triggers/dml-triggers?view=sql-server-ver17

https://stackoverflow.com/questions/3358975/create-trigger-in-sql-server

Y con esto concluyo mi primera entrada a la bitácora, y dejo en claro que de momento no he hecho commit a los "bocetos" de los SPs, ya que creo que tiene más sentido primero investigar sobre el trigger y hacer el trigger.

Comments

Popular posts from this blog

Primera Entrada de la bitácora (5/6/26)