sql >> Base de Datos >  >> RDS >> Database

Cómo almacenar los horarios de los empleados en una base de datos

Nivel:Principiante

Muchas organizaciones enfrentan el problema común de almacenar los horarios de los empleados. No importa qué institución:una empresa, una universidad o simplemente un particular, muchas entidades necesitan una aplicación para ver los horarios. Por lo tanto, intentaré crear un modelo de base de datos y luego, en un artículo futuro, hablaremos sobre una aplicación simple para almacenar los horarios de los empleados en una base de datos.

Actualmente, el diseño tiene el siguiente aspecto:

El modelo es bastante sencillo.

Consejo:estrategias clave naturales y alternativas

  1. Utilice una clave principal sustituta siempre que los valores de la clave natural puedan cambiar o cuando una clave natural sea demasiado compleja.
  2. Si una clave candidata natural consiste en una pequeña cantidad de columnas (idealmente solo una) y sus valores no cambian, utilícela como clave principal natural

Más información sobre claves primarias naturales y sustitutas.

El employee La tabla contiene atributos básicos que describen a cada empleado, por ejemplo:nombre, apellido, dirección y número de teléfono. Nombre y apellido no identifican unívocamente cada registro (podría haber más de una persona con el mismo nombre y apellido), por eso se introdujo una nueva columna (id ), llamada clave sustituta .

El schedule tabla contiene los días y horas en que cada empleado está en el trabajo. La work_date columna especifica un día en que cada empleado estaba trabajando. El start_work_hour y end_work_hour las columnas identifican las horas de trabajo para ese día.

Supongamos que tenemos un empleado llamado Peter. Estuvo en el trabajo el 4 de febrero y marca su hora de inicio y finalización en el horario.

La fila correspondiente en el schedule la tabla se ve así:


id id_de_empleado fecha_trabajo hora_de_trabajo hora_final_trabajo es_vacaciones es_fin_de_semana
1 1 2015-02-04 10 16 0 0


Mientras construimos un sistema de este tipo, es posible que queramos saber quién trabajó más noches o quién trabajó más fines de semana/días festivos. Para generar informes que contengan dicha información, las columnas is_holiday y is_weekend fueron presentados.

Con este enfoque, necesitará tener una tabla separada para días festivos que contenga las fechas de los días festivos de la empresa. Cuando un empleado ingresa su tiempo de trabajo, las columnas is_holiday y is_weekend puede actualizarse mediante un disparador. Después de insertar la fecha y la hora, el activador comprobará si la fecha es un día festivo o un fin de semana e insertará el valor correcto en el campo.