INF420 202310 Segundo Parcial
INF420 202310 Segundo Parcial
INF420 202310 Segundo Parcial
El sistema de solicitud de vacaciones es una aplicación de consola diseñada para permitir a los empleados solicitar sus vacaciones
de forma eficiente y sencilla. El sistema permitirá a los empleados solicitar sus vacaciones y consultar el estado de su solicitud.
Asimismo, permitirá a los administradores aprobar o rechazar las solicitudes de vacaciones que hayan realizado los empleados.
Registro de empleados: los empleados deben registrarse en el sistema proporcionando su nombre, apellido, correo electrónico.
Solicitud de vacaciones: los empleados pueden solicitar sus vacaciones indicando la fecha de inicio, la fecha de finalización y el
motivo de la solicitud. La solicitud se enviará a los administradores para su aprobación.
Aprobación de solicitudes: los administradores pueden aprobar o rechazar las solicitudes de vacaciones enviadas por los
empleados.
Consultas: los empleados podrán consultar el estado de su solicitud de vacaciones, incluyendo la aprobación o el rechazo de la
misma.
Reportes: los administradores pueden generar informes sobre las solicitudes de vacaciones, incluyendo la cantidad de solicitudes
aprobadas, rechazadas y pendientes.
Con este sistema, los empleados podrán planificar sus vacaciones con anticipación y consultar oportunamente el estado de su
solicitud. ¡Esperamos que disfrutes utilizando el sistema de solicitud de vacaciones!
Requerimientos:
a. Luego de leer la narrativa anterior, proceda a escribir en forma de esquema relacional simple, el nombre de las tablas y
los campos que intervienen en la solución de los requerimientos de la narrativa. A continuación, un ejemplo para la tabla
empleados:
1
b. Crear las tablas que intervienen en este sistema, utilizando SQL Data Definition Language (DDL), tomando en cuenta:
Las primary keys y foreign keys correspondientes para asegurar la integridad referencial.
Los constraitns de campo correspondientes para asegurar la calidad de la data. Por ejemplo: defaults, not null,
entre los demás que usted considere.
2
c. Insertar los datos en cada tabla identificada.
d. Escriba los queries SQL Select y los capture correspondientes, que respondan a las siguientes consultas:
1. Muestre todos los empleados de la empresa.
SELECT * FROM Empleados;
2. Muestre todos los empleados cuya solicitud de vacaciones fue aprobada organizada por mes.
3
SELECT E.nombre, E.apellido, MONTH(SV.fechaInicio) AS Mes
FROM Empleados E
JOIN SolicitudesVacaciones SV ON E.idEmpleado = SV.idEmpleado
WHERE SV.estado = 'Aprobada'
ORDER BY Mes;
4. Muestre la cantidad de días de vacaciones tomados por los empleados en un intervalo de tiempo.
SELECT E.nombre, E.apellido, SUM(DATEDIFF(SV.fechaFin, SV.fechaInicio)) AS DiasVacaciones
FROM Empleados E
JOIN SolicitudesVacaciones SV ON E.idEmpleado = SV.idEmpleado
WHERE SV.estado = 'Aprobada' AND SV.fechaInicio BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY E.idEmpleado;
e. Convierta en una vista el query que encontró más difícil realizar del punto anterior y muestre su resultado haciendo select
a la vista.
4
-- Creación de la vista
CREATE VIEW VistaDiasVacaciones AS
SELECT E.nombre, E.apellido, SUM(DATEDIFF(SV.fechaFin, SV.fechaInicio)) AS DiasVacaciones
FROM Empleados E
JOIN SolicitudesVacaciones SV ON E.idEmpleado = SV.idEmpleado
WHERE SV.estado = 'Aprobada' AND SV.fechaInicio BETWEEN '2023-01-01' AND '2023-12-31'
GROUP BY E.idEmpleado;
-- Consulta a la vista
SELECT * FROM VistaDiasVacaciones;