我想这是一种方法: 你有3个表: 雇员 (employee_id PK), 调度 (employee_id FK)和 timeOff (employee_id FK)
调度 日期 employee_id(员工表FK) 开始时间 时间结束 休假 评论
您的 雇员 表将有基本的员工信息。
调度 table将包含schelude数据以及day_off的标志(如果是休息日则设置为1)以及用于评论的任何类型的注释字段。
如果day_off设置为1,您将在。中描述day_off timeOff 表。 timeOff 你可以用任何你想要的方式设计桌子。你会有日期,所以你知道它是什么日子。你可以有理由字段,其中1 - 休假日,2 - 病假,3 - 个人日,4 - 与另一名员工切换等等。您可以在此处添加注释字段以及计划已切换的人员的employee_id
我的建议是拥有一个带有Employee Schedules的Base表,然后有一个包含异常的表。我在日历应用程序中有类似的东西。我有一个包含正常计划的Employee表,然后我有一个单独的表,其中包含例外 - 休假,休假,培训等。
EmployeeTable PK - EmployeeID EmployeeName Schedule fields - starttime, endtime, days, etc Employee_ExceptionTable PK - EmployeeId ExceptionTypeId PK - ExceptionStartDate ExceptionEndDate ExceptionTypeTable ExceptionTypeId ExceptionName - Vacation, Leave Early, Training
由于Employee_ExceptionTable具有EmployeeId和ExceptionStartDate的键,因此每天只允许一个例外,但这些是基本调度的例外。正如我所说,我在我的应用程序中有类似的东西,监视大约100人,它似乎工作。这可能是您的起点。