Php 时间表和数据库
所以,我以前用php开发了一个员工调度系统。效率很低。当我创建一个新计划时,我在一个名为“schedules”的表中生成了一行,对于每个受该计划影响的员工,我在一个名为“schedule_days”的表中生成了一行,给出了特定日期的开始和停止时间。此外,编辑时间表也是一场灾难。在编辑页面上,我从数据库中的特定时间表中提取每个用户,并将其打印在页面上。这是非常合乎逻辑的,但速度非常慢Php 时间表和数据库,php,mysql,database,Php,Mysql,Database,所以,我以前用php开发了一个员工调度系统。效率很低。当我创建一个新计划时,我在一个名为“schedules”的表中生成了一行,对于每个受该计划影响的员工,我在一个名为“schedule_days”的表中生成了一行,给出了特定日期的开始和停止时间。此外,编辑时间表也是一场灾难。在编辑页面上,我从数据库中的特定时间表中提取每个用户,并将其打印在页面上。这是非常合乎逻辑的,但速度非常慢 你可以想象,一周的日程安排需要约15名员工。这将是对计划的1个查询,对每个用户的1个查询,以及对每个用户的每天7个
你可以想象,一周的日程安排需要约15名员工。这将是对计划的1个查询,对每个用户的1个查询,以及对每个用户的每天7个查询。。如果我有15个用户,那就太多了。所以我只是问,其他人对最好的方法有什么看法 对于基于旋转的明细表,您希望使用基于排除的系统。如果您知道员工x在日期范围z内轮流在y工作,那么您可以动态计算该员工的个人天数。如果他们因病/正在上课/等,则为该员工添加当天的例外情况。这将使数据库比每天跟踪每个员工的数据要小得多
table employee {EmployeeID}
table employeeRotations {EmployeeRotationID, EmployeeID, RotationID, StartDate, EndDate}
table rotation {RotationID, NumberOfDays, StartDate}
table rotationDay {RotationDayID, RotationID, ScheduledDay, StartTime, EndTime}
table employeeExceptions {EmployeeExceptionID, ExceptionDate, ExceptionTypeID (or whatever you want here)}
从那里,您可以编写一个函数,在任何给定的日期或任何给定的星期返回开/关/异常。听起来您需要学习如何进行连接,而不是为每个项目进行多次往返服务器。请注意,我维护的系统与您的系统几乎完全相同(我没有编写)三年后,数据库变得庞大而缓慢。因为计划必须预先生成,后台有一个作业会预先生成一年的数据,然后当有人切换他们的计划时,需要删除全年的预生成数据,需要生成新的全年数据,然后,旧计划中的异常需要映射到新计划。这是一场噩梦。。。