搜索后我找不到这样的问题所以我发帖了。
为10位同事制定工作时间表以获得乐趣
它是基于日历的(我们每周7天轮班,不同的班次有不同的职责 - (周一上午8点至下午5点任务1,周一上午8点至下午5点任务2,周六下午5点至上午8点(晚上)任务2,等)
使用mySQL
我无法绕过设置mySQL表的最佳方法。有人有这方面的经验吗?
星期一说这个:
Monday days - Joe - Task 1
Monday days - Sally - task 2
Monday days - Mike - task 3
Monday nights - Bob - task 1,2,3
Tuesday days - Joe - Task 1
..etc..
显然这个表设置效率低下:
id, date, worker, shift, task
这是低效率的,因为'date'字段在一年中的每一天都会有很多条目...有更好的方法吗?
答案 0 :(得分:2)
一个非常有趣的问题,一个众所周知的难题。阅读斯科特罗森伯格的梦想代码,了解一些与此类问题相似的问题。
您有一个基本的设计选择。您可以枚举日期和班次,也可以使用类似通配符的方案来描述时间间隔。 (例如“2013年的所有工作日”或“2012年9月的星期五和星期六”或你有什么。)
如您所见,枚举日期和班次会产生大量记录。但它很容易编程。而且,MySQL可以轻松处理数万条记录。
另一方面,类似外卡的方案更优雅。但它在语义上要复杂得多。 Unix / BSD / Linux crontab系统(http://crontab.org/)包含一种简单但丑陋的方式来指定这类东西。
要完美地实现此类功能,请查看Google日历的重复约会功能集。