Enunciado #
El diagrama inicial ya incluye las tablas colocadas y sus nombres. Añade los campos y configura sus tipos, claves, restricciones y relaciones según el enunciado.
Una empresa necesita gestionar sus empleados, contratos, direcciones, departamentos y proyectos. Los empleados pueden tener varios contratos a lo largo del tiempo y participar en varios proyectos con un rol específico en cada uno. El país se reutiliza en direcciones y departamentos y debe almacenarse en una tabla propia.
Datos que debes almacenar #
- Pais:
id_pais (entero, identificador, autoincremental), nombre (texto), idioma (texto) y bandera (texto; ruta o URL de la imagen).
- Direccion:
id_direccion (entero, identificador, autoincremental), calle (texto), ciudad (texto), estado (texto), codigo_postal (texto) e id_pais (entero).
- Departamento:
id_departamento (entero, identificador, autoincremental), nombre (texto) e id_pais (entero; país de localización).
- Empleado:
id_empleado (entero, identificador, autoincremental), nombre (texto), apellido (texto), fecha_nacimiento (fecha), fecha_contratacion_inicial (fecha), id_direccion (entero) e id_departamento (entero).
- Contrato:
id_contrato (entero, identificador, autoincremental), salario (decimal), fecha_inicio (fecha), fecha_fin (fecha, opcional mientras siga vigente), tipo (texto) e id_empleado (entero).
- Proyecto:
id_proyecto (entero, identificador, autoincremental), nombre (texto), descripcion (texto), fecha_inicio (fecha), fecha_fin_estimada (fecha) e id_departamento (entero).
- Asignacion:
id_empleado (entero), id_proyecto (entero), rol (texto) y fecha_inicio (fecha; inicio de la participación).
Reglas del negocio #
- Cada empleado tiene una única dirección registrada. Para concretar la relación 1:1, cada fila de
Direccion corresponde como máximo a un empleado: Empleado.id_direccion debe ser obligatorio y único. Dos personas que vivan en el mismo lugar pueden tener registros de dirección con los mismos datos; los valores de calle y ciudad no son únicos.
- Un empleado pertenece a un departamento y un departamento puede tener muchos empleados.
- Cada contrato pertenece a un empleado y un empleado puede tener varios contratos históricos.
- Un país puede aparecer en muchas direcciones y en muchos departamentos. No repitas sus atributos en esas tablas.
- La nota del documento propone relacionar proyectos y departamentos sin indicar cardinalidad. En esta solución, cada proyecto pertenece a un departamento y un departamento puede gestionar varios proyectos.
- La relación entre empleados y proyectos es N:N. Usa
(id_empleado, id_proyecto) como PK compuesta de Asignacion; se registra un rol y una fecha de inicio por pareja. No se pide un historial de cambios de rol o de reincorporaciones.
- Los empleados pueden colaborar en proyectos de otros departamentos; no se exige que el departamento del empleado coincida con el del proyecto.
Diseña las siete tablas y sus relaciones. La coherencia de fechas y los rangos salariales se validarían al implementar la base de datos.
Si no se dice lo contrario los campos son obligatorios.