这个票证表应该用于队列系统中,我可以将票证从服务队列转发到不同的队列。
我的票证表有如下字段 number
, ticketRequest
(创建票证的时间戳), expectedCallTimestamp
(要参加的预测呼叫的时间戳)等。。。
以下是表票证的创建脚本:
CREATE TABLE `ticket` (
`ticket_id` int(11) NOT NULL AUTO_INCREMENT,
`wrong_ticket_id` int(11) DEFAULT NULL,
`number` int(3) NOT NULL,
`forwarded` tinyint(1) NOT NULL DEFAULT '0',
`answered` tinyint(1) DEFAULT NULL,
`ticketRequest` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`expectedCallTimestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`callTimestamp` timestamp NULL DEFAULT NULL,
`serviceDuration` time DEFAULT NULL,
`service_id` int(11) NOT NULL,
`organic_unit_id` int(11) NOT NULL,
`device_id` int(11) NOT NULL,
`user_id` int(11) DEFAULT NULL,
`counter_id` int(11) DEFAULT NULL,
PRIMARY KEY (`ticket_id`),
UNIQUE KEY `UQ_ticket_wrongTicketId` (`wrong_ticket_id`) USING BTREE,
KEY `FK_ticket_queue` (`service_id`,`organic_unit_id`),
KEY `FK_ticket_device` (`device_id`),
KEY `FK_ticket_workerbycounter` (`user_id`,`counter_id`),
CONSTRAINT `FK_ticket_device` FOREIGN KEY (`device_id`) REFERENCES `device` (`device_id`),
CONSTRAINT `FK_ticket_queue` FOREIGN KEY (`service_id`, `organic_unit_id`) REFERENCES `queue` (`service_id`, `organic_unit_id`),
CONSTRAINT `FK_ticket_workerbycounter` FOREIGN KEY (`user_id`, `counter_id`) REFERENCES `workerbycounter` (`user_id`, `counter_id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=latin1
好的,所以我想的是——当一个客户选择了一个他打算选择的不同的服务时(有时会发生),作为柜台后面的操作员,我可以用相同的服务创建一个新的票证 ticketRequest
错误服务票证的时间戳,并使用该错误服务票证的时间戳。 ticket_id
通过转发邮件引用。 wrong_ticket_id
(具有预期/正确服务的人)用于多种目的。
我的方法是在表ticket上有一个1到0或1的递归关系,其中有一个可为null且唯一的字段 wrong_ticket_id
这和错误的服务票是一样的。 ticket_id
如前所述,创建forwardedticket时。
下面是我试图构建的数据模型示例:
有没有可能实现这个功能,或者有没有更好的方法来处理这个问题?以及如何选择错误服务票证的信息,例如,当有一张票证和其他没有被转发的票证在同一队列中转发时,调用队列中的下一张票证?
1条答案
按热度按时间shyt4zoc1#
据我所知,您打算在现有票据(错误票据)和新票据(更正票据)之间建立亲子关系。
你建议的方法是可行的,除了一些小的修正-
将错误的\u ticket \u id列保留为可空,因为在使用有效服务创建的大多数票证中,该列可以为空。
您可以选择对错误的\u票证\u id设置检查约束。只有当“forwarded”为true时,才会填充此列。