Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

INF420 202310 Segundo Parcial

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 5

UASD 2023-10/ INF-420/ Julio Castro SEGUNDO PARCIAL

NOMBRE Darling MATRICULA


1 0 0 4 5 1 8 1 5 Para uso
APELLIDO Fajardo del
SECCIÓN: 05 Sábados profesor

TEMA: Segundo Parcial. Valor: 15 puntos.

Narrativa Para un Sistema de Solicitud de Vacaciones de Empleados.

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.

El sistema de solicitud de vacaciones consta de las siguientes funcionalidades:

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:

Empleados (nombre, apellido, correoElectronico)

SolicitudesVacaciones (idSolicitud PK, idEmpleado FK, fechaInicio, fechaFin, motivo, estado)

Administradores (idAdministrador PK, nombre, apellido, correoElectronico)

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.

-- Creación de la tabla Empleados


CREATE TABLE Empleados (
idEmpleado INT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
correoElectronico VARCHAR(100) NOT NULL
);
-- Creación de la tabla Administradores
CREATE TABLE Administradores (
idAdministrador INT PRIMARY KEY,
nombre VARCHAR(50) NOT NULL,
apellido VARCHAR(50) NOT NULL,
correoElectronico VARCHAR(100) NOT NULL
);
-- Creación de la tabla SolicitudesVacaciones
CREATE TABLE SolicitudesVacaciones (
idSolicitud INT PRIMARY KEY,
idEmpleado INT,
fechaInicio DATE NOT NULL,
fechaFin DATE NOT NULL,
motivo VARCHAR(255),
estado VARCHAR(50) NOT NULL,
FOREIGN KEY (idEmpleado) REFERENCES Empleados(idEmpleado)
);

2
c. Insertar los datos en cada tabla identificada.

-- Inserción de datos en Empleados


INSERT INTO Empleados (idEmpleado, nombre, apellido, correoElectronico) VALUES
(1, 'Juan', 'Pérez', 'juan.perez@email.com'),
(2, 'Ana', 'Gómez', 'ana.gomez@email.com');

-- Inserción de datos en Administradores


INSERT INTO Administradores (idAdministrador, nombre, apellido, correoElectronico) VALUES
(1, 'Carlos', 'López', 'carlos.lopez@email.com');

-- Inserción de datos en SolicitudesVacaciones


INSERT INTO SolicitudesVacaciones (idSolicitud, idEmpleado, fechaInicio, fechaFin, motivo, estado) VALUES
(1, 1, '2023-07-01', '2023-07-15', 'Vacaciones anuales', 'Pendiente');

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;

3. Muestre todas las solicitudes de vacaciones que se encuentran pendientes de aprobar.


SELECT * FROM SolicitudesVacaciones WHERE estado = 'Pendiente';

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;

También podría gustarte