我有一张表,用于存储教师的可用约会,允许两种插入:
每小时:可以完全自由地为每位教师每天添加无限时段(只要时段不重叠):4 月 15 日,一名教师可能在 10:00、11:00、12:00 和 16:00 拥有时段. 在选择特定的教师时间/时段后为一个人提供服务。
时间段/范围:4月15日,另一位教师可能在10:00至12:00和14:00至18:00工作。一个人按到达顺序服务,所以如果老师在 10:00 到 12:00 工作,那么在此期间到达的所有人员都将按到达顺序(本地队列)出席。
由于我必须在搜索中返回所有可用的教师,因此我需要将所有空位与到达范围的顺序保存在同一个表中。通过这种方式,我可以按 date_from ASC 排序,在搜索结果中首先显示第一个可用插槽。
CREATE TABLE `teacher_slots` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`teacher_id` mediumint(8) unsigned NOT NULL,
`city_id` smallint(5) unsigned NOT NULL,
`subject_id` smallint(5) unsigned NOT NULL,
`date_from` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`date_to` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`status` tinyint(4) NOT NULL DEFAULT '0',
`order_of_arrival` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `by_hour_idx` (`teacher_id`,`order_of_arrival`,`status`,`city_id`,`subject_id`,`date_from`), …
Run Code Online (Sandbox Code Playgroud) mysql ×1