sql – 调度数据库(基本调度例外)

前端之家收集整理的这篇文章主要介绍了sql – 调度数据库(基本调度例外)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
目前,我们的员工安排在一家24/7公司为约800名员工安排Excel工作簿.我需要将所有调度都移到我设计的Access员工数据库中,这是我们多年来一直使用的. (注意:我知道Access不是理想的平台,但它就是我拥有的.)

每位员工都有一个基本时间表,例如凌晨2点开始时间,周三/周四休息.任何给定周的员工日程安排将是由例外情况修改的基准日程表,例如:

>休假请求
>与另一名员工轮班转换一天
>缺席的叶子(基本上是另一种形式的休假)
>根据计划管理员的公司需求安排更改

数据库只需存储基本计划,并以某种方式显示给定周的计划.它不需要任何高级逻辑,如基于可用性的调度.

我可以看到几种方法来实现它.我想到的第一个问题是存储基本计划,然后根据需要动态生成给定周的计划,方法是将基本计划与基于上述例外的表(时间关闭,交换机等)相结合.但是,我看不到如何存储基本计划以及如何将基础与例外合并以生成计划.我会想像baseSchedule(PKScheduleID,FKEmployeeID,DayOfWeek,StartTime)这样的表,但我不确定.

另一种方法是在表格中生成每周时间表,例如使用此处描述的“三表Kimball Star”方法http://www.damirsystems.com/?p=466.基本上,它创建一个充满日期的表,并与员工建立多对多关系以定义时间表.我不喜欢这种方法有很多原因,例如每次添加时都需要在应用程序级别检查/修改该表等,以及需要在表中“生成”新的计划.此外,这可能会膨胀到2000名员工,我担心糟糕的Access会在每个员工每天都有记录的火焰中爆炸.

有没有人有任何实现基本计划修饰方法的设计思路?我很乐意只使用查询生成日程安排,但如果有必要,我很乐意使用VBA.

谢谢

编辑8/19/11 4:30 pm:
我想我会选择与bluefeet的答案非常相似的东西.下面是我在空白数据库中模拟的设计:

每位员工在一周中的每一天都会在基本表中记录一个记录,其中包含开始时间和计划工作的小时数.还有一个Exceptions表,其中列出了对日程表,员工和他的新班次的日程表的修改.

对于应用程序级别表单和报告,我将基本计划拉入一个记录集,其中包含一个非常草率的查询,输出如下内容

Name  Mon     Tue     Wed     Thu     Fri     Sat     Sun
Alice 6:00 PM 6:00 PM Off     Off     2:00 PM 2:00 PM 2:00 PM
Bob   4:00 PM 4:00 PM 4:00 PM 4:00 PM Off     Off     4:00 PM

然后,在VBA中,我还将日期范围(一周)的异常拉入记录集.我将循环遍历异常记录集,修改基本记录集(从上面).然后我将设置表单/报告以使用修改后的记录集.它有点不雅,但它可以很好地完成工作.

如果有任何想法如何将Base和Exceptions表与仅使用查询而没有VBA的输出结合起来,请告诉我.

再次感谢

解决方法

我的建议是拥有一个带有Employee Schedules的Base表,然后有一个包含例外的表.我在日历应用程序中有类似的东西.我有一个包含正常计划的员工表,然后我有一个单独的表,其中包含例外 – 休假,休假,培训等.
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人,它似乎工作.这可能是您的起点.

猜你在找的MsSQL相关文章