Color de Acento

Guía de Esquema de Base de Datos HRMS

Tabla Central de Empleados

La tabla employees es la entidad central. Los campos incluyen employee_id (PK), employee_code (identificador alfanumérico único), first_name, last_name, date_of_birth, gender, phone, personal_email, work_email, department_id (FK), position_id (FK), manager_id (FK autorreferenciado para jerarquía de reportes), employment_type (tiempo completo/medio tiempo/contrato/pasante), date_of_joining, confirmation_date, exit_date, y employment_status. Una tabla employee_documents almacena referencias a ofertas laborales, contratos e identificaciones, cada una con un campo expiry_date para activar recordatorios de renovación.

Jerarquía de Departamentos y Posiciones

La tabla departments organiza la estructura de la empresa: department_id (PK), department_name, department_code, head_of_department (FK a employee_id), parent_department_id (FK autorreferenciado), y cost_center_code. La tabla positions define los roles de trabajo: position_id (PK), position_title, job_grade, minimum_salary, maximum_salary, y required_qualifications. Una tabla junction employee_positions rastrea el historial de posiciones: employee_id (FK), position_id (FK), effective_date, end_date, e is_current. Este diseño soporta empleados que cambian de roles a lo largo del tiempo mientras mantiene un historial profesional completo.

Asistencia y Seguimiento de Tiempo

La tabla attendance registra el check-in/check-out diario: attendance_id (PK), employee_id (FK), date, check_in_time, check_out_time, total_hours_worked, overtime_hours, y status. Una tabla attendance_logs almacena marcas biométricas o RFID sin procesar para fines de auditoría. Para organizaciones con turnos, una tabla shifts (shift_id, shift_name, start_time, end_time, grace_period_minutes) se combina con una tabla employee_shifts de asignación. Las llegadas tardías y salidas tempranas se calculan comparando los tiempos reales de check-in/out contra la ventana del turno asignado.

Gestión de Permisos

La tabla leave_types enumera las categorías de permisos disponibles: leave_type_id (PK), leave_name (Anual/Enfermedad/Maternidad/Paternidad/Compasivo/No remunerado), is_paid, y carry_forward_allowed. La tabla employee_leave_balance rastrea las asignaciones: balance_id (PK), employee_id (FK), leave_type_id (FK), fiscal_year, total_days_allocated, days_used, days_pending_approval, y days_carried_forward. La tabla leave_applications gestiona las solicitudes: leave_application_id (PK), employee_id (FK), leave_type_id (FK), start_date, end_date, total_days, reason, status, y approved_by.

Esquema de Nómina

El esquema de nómina es la parte financieramente más sensible. La tabla payroll_cycles define los períodos: cycle_id (PK), cycle_name, start_date, end_date, payment_date, y status. La tabla salary_structures define los componentes: structure_id (PK), employee_id (FK), effective_date, basic_pay, hra, conveyance_allowance, medical_allowance, special_allowance, pf_deduction, professional_tax, income_tax, y net_salary. La tabla payroll_runs almacena los recibos de nómina generados: payroll_run_id (PK), employee_id (FK), cycle_id (FK), gross_pay, total_deductions, net_pay, overtime_pay, reimbursement, leave_deductions, y payment_status. Una tabla payroll_audit registra cada cambio en las estructuras de salario para cumplimiento normativo.

Gestión del Desempeño

La tabla performance_reviews registra las evaluaciones: review_id (PK), employee_id (FK), reviewer_id (FK), review_period, review_date, overall_rating, y summary. Una tabla review_goals rastrea los objetivos: goal_id (PK), review_id (FK), goal_description, weight_percent, self_rating, manager_rating, y comments. La tabla review_skills evalúa competencias: skill_id (PK), review_id (FK), skill_name, skill_category, y rating. Las puntuaciones de desempeño pueden alimentar cálculos de bonificaciones y recomendaciones de promoción.

Reclutamiento e Incorporación

La tabla job_openings enumera las posiciones: opening_id (PK), department_id (FK), position_title, required_skills, experience_required, openings_count, filled_count, status, y posted_date. La tabla candidates rastrea a los solicitantes: candidate_id (PK), first_name, last_name, email, phone, resume_url, source, current_company, current_ctc, expected_ctc, notice_period, y status. Una tabla interviews programa y puntúa: interview_id (PK), candidate_id (FK), job_opening_id (FK), interviewer_id (FK), interview_date, interview_type, round_number, rating, y feedback.

Mejores Prácticas para Base de Datos HRMS

Implementa seguridad a nivel de fila para datos de nómina y desempeño — los gerentes de RRHH solo deberían ver su cadena de reportes. Usa eliminaciones suaves en todas las tablas relacionadas con empleados para mantener rastros de auditoría. Encripta columnas sensibles como salario, números de cuenta bancaria y direcciones personales a nivel de base de datos. Indexa employee_code y work_email para búsquedas rápidas. Para organizaciones con miles de empleados, particiona attendance_logs por mes y archiva registros mayores a 2 años. Siempre usa declaraciones preparadas para cálculos de nómina. Mantén una tabla audit_trail separada que registre quién cambió qué y cuándo para cumplimiento con regulaciones laborales.