Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 时间表和数据库_Php_Mysql_Database - Fatal编程技术网

Php 时间表和数据库

Php 时间表和数据库,php,mysql,database,Php,Mysql,Database,所以,我以前用php开发了一个员工调度系统。效率很低。当我创建一个新计划时,我在一个名为“schedules”的表中生成了一行,对于每个受该计划影响的员工,我在一个名为“schedule_days”的表中生成了一行,给出了特定日期的开始和停止时间。此外,编辑时间表也是一场灾难。在编辑页面上,我从数据库中的特定时间表中提取每个用户,并将其打印在页面上。这是非常合乎逻辑的,但速度非常慢 你可以想象,一周的日程安排需要约15名员工。这将是对计划的1个查询,对每个用户的1个查询,以及对每个用户的每天7个

所以,我以前用php开发了一个员工调度系统。效率很低。当我创建一个新计划时,我在一个名为“schedules”的表中生成了一行,对于每个受该计划影响的员工,我在一个名为“schedule_days”的表中生成了一行,给出了特定日期的开始和停止时间。此外,编辑时间表也是一场灾难。在编辑页面上,我从数据库中的特定时间表中提取每个用户,并将其打印在页面上。这是非常合乎逻辑的,但速度非常慢


你可以想象,一周的日程安排需要约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)}

从那里,您可以编写一个函数,在任何给定的日期或任何给定的星期返回开/关/异常。

听起来您需要学习如何进行连接,而不是为每个项目进行多次往返服务器。

请注意,我维护的系统与您的系统几乎完全相同(我没有编写)三年后,数据库变得庞大而缓慢。因为计划必须预先生成,后台有一个作业会预先生成一年的数据,然后当有人切换他们的计划时,需要删除全年的预生成数据,需要生成新的全年数据,然后,旧计划中的异常需要映射到新计划。这是一场噩梦。。。