Creación de tablas en Mysql.
PROBLEMA #2
Supongamos que se nos ha encargado el diseño de una base de datos que sirva de soporte al
sistema de gestión de las nóminas de una empresa. Tras analizar detenidamente el problema,
averiguamos que nuestro sistema debe cumplir los siguientes requisitos:
• La empresa tiene un conjunto de empleados trabajando con contrato (un empleado puede
firmar varios contratos a lo largo de su carrera profesional).
• Para cada empleado, el sistema almacena sus datos personales (DNI, nombre, apellidos,
teléfono, dirección) y el número de su cuenta corriente para realizar las transferencias
correspondientes a las nóminas.
• Cada contrato firmado por un empleado tiene una fecha de alta, una fecha de baja (nula si el
contrato es indefinido), una categoría asociada y un puesto de destino.
• El sueldo base de un empleado depende de su categoría.
• En función del puesto de destino del empleado, el empleado puede recibir uno o varios
complementos, que se sumarán al sueldo base del empleado.
• Además, por su antigüedad en la empresa, el empleado cobrará trienios (cuyo importe
depende de la categoría de su contrato actual).
• Por último, el empleado también cobrará complementos por los cargos que desempeñe
(durante la duración de su ocupación del cargo, que no tiene por qué coincidir con la de su
contrato).
• De las percepciones salariales indicadas en los puntos anteriores, la nómina de cada empleado
incluirá una serie de deducciones (p.ej. aportaciones seguro social, impuesto sobre la renta )
• El sistema debe almacenar todas las nóminas emitidas mensualmente e incluir
automáticamente tanto los distintos conceptos correspondientes a percepciones salariales del
empleado como los distintos tipos de deducciones a los que está sujeta su nómina.
CREATE TABLE empleado(dni
INT NOT NULL PRIMARY KEY AUTO_INCREMENT,nombre VARCHAR(30), apellido
VARCHAR(50), telefono VARCHAR(30), direccion VARCHAR(50), fecha_ingreso DATE,
id_puesto INT NOT NULL, INDEX(id_puesto));
CREATE TABLE puesto(id_puesto INT NOT NULL PRIMARY KEY AUTO_INCREMENT,npuesto VARCHAR(30), dni INT NOT NULL);
CREATE TABLE contrato(id_contrato INT NOT NULL PRIMARY KEY AUTO_INCREMENT,fecha_alta DATE, fecha_baja DATE, id_categoria INT NOT NULL, dni INT NOT NULL);
CREATE TABLE categoria(id_categoria INT NOT NULL PRIMARY KEY AUTO_INCREMENT, nom_categoria VARCHAR(30), sueldo_cat INT);
CREATE TABLE nomina(id_nomina INT NOT NULL PRIMARY KEY AUTO_INCREMENT,hrs_trabajadas VARCHAR(15),complementos VARCHAR(10),id_empleado INT NOT NULL,id_deducciones INT NOT NULL,sueldo_cat INT NOT NULL);
CREATE TABLE deducciones(id_deducciones INT NOT NULL PRIMARY KEY AUTO_INCREMENT, aportaciones VARCHAR(10),impuestos_renta INT, seguro_social DOUBLE);
No hay comentarios:
Publicar un comentario