我需要想出一个能够将员工日程安排存储在数据库中的软件。我目前有这样的设计:改进我当前的数据库设计以存储员工的日程表
CREATE TABLE IF NOT EXISTS `schedules` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`employee_id` varchar(32) NOT NULL,
`day_of_week` int(2) NOT NULL,
`starting_time` time DEFAULT NULL,
`ending_time` time DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
非常直截了当。打印今天的日期,找出一周中的星期几,并从数据库中检索所有匹配,但我想知道更好的方法来实现相同的目标。
我需要在日历上显示员工的时间表,我需要将日期传递给日历才能显示。但是,如果我知道的唯一信息是特定员工将在星期三工作,那么我无法将日期传递给日历。
鉴于后者的数据库设计,有没有办法检索所有星期三或一个月/一个星期一?
谢谢!
编辑
我需要帮助倒退(或更好的替代)来改变星期来实际日期。
这些都是我的“限制”:
- 我的日历控件需要,以显示在用户界面中的“事件”的日期。
- 员工只需提交一次他们的日程安排。
例如: 约翰Doe周一,周三和周五工作。 8:00 - 12:00。
这些信息,我目前的数据库设计,在用以下方式表示:
ID, employee_id, day_of_week, starting_time, ending_time
1, John Doe, 1, 8:00, 12:00
2, John Doe, 3, 8:00, 12:00
3, John Doe, 5, 8:00, 12:00
我需要能够日期传递到日历UI给定月份。
比如我应该能够拿出一个办法来告诉我的日历控件: 李四打算6日,13日,20日上班,和27也要考虑到我的唯一信息是“ DAY_OF_WEEK” = 1(星期一)
EDIT 2
我的电流,但丑陋的解决方案是: 遍历整个5月的天,按天查询数据库的一天。
编辑3 - 解决方案
由于RS,我能解决我的问题。 我不停的schedules
表,因为它是,但我创建由RS 建议表创建由RS 下面的查询共享文章中描述的表之后做了工作:
SELECT CONCAT(users.firstname,\" \",users.lastname) as employee_name,
DATE_FORMAT(DATE, '%a %b %d %Y') as date, schedules.starting_time,
schedules.ending_time FROM dates_d
RIGHT JOIN schedules ON schedules.day_of_week = dates_d.day_of_week
LEFT JOIN users ON schedules.employee_id = users.ID
我JSON编码的数组,日历控件终于像魅力一样工作。
您可以创建日期表并使用该表中的密钥并存储在此处。日期表将允许您通过不同的日期变量查询数据,例如:日,星期,星期几,季度等 - http://www.dwhworld.com/2010/08/date-dimension-sql-scripts-mysql/ – 2012-08-06 15:04:18
你能再详细一点,我想我或多或少都能理解你的观点。 – ILikeTacos 2012-08-06 15:07:37
SELECT * FROM schedule WHERE day_of_week = DAYOFWEEK('2007-02-03');将允许您获取特定日期的时间表。 DAYOFWEEK给出了1-Monday到7-Sunday(不同于php的日期(),这是周日到周六) – Waygood 2012-08-06 15:09:15