gpt4 book ai didi

mysql - 票务系统 : sql tables

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:57 25 4
gpt4 key购买 nike

我不太擅长创建 MySQL 表。

我想做一个小票系统,用户可以申请以下信息:

  • 工单用户名
  • 票务电子邮件
  • 问题

Snapshot

提交后,我希望将信息存储在数据库表中。

现在支持者和用户应该可以向这张票添加评论了。

我尝试创建表格,但我有点担心它是否会以这种方式工作:

CREATE TABLE IF NOT EXISTS `Tickets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`email` varchar(50) NOT NULL,
`ticket_id` varchar(30) NOT NULL,
`ticket_question` varchar(255) NOT NULL,
`ticket_status` tinyint(1) NOT NULL DEFAULT '0',
`ticket_creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
PRIMARY KEY (`ticket_id`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=203 ;

CREATE TABLE IF NOT EXISTS `Conversation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ticket_id` varchar(30) NOT NULL,
`ticket_comment` varchar(255) NOT NULL,
`ticket_latest_reply` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
PRIMARY KEY (`ticket_id`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=203 ;

谁能看看这个或纠正我?

最佳答案

我认为您希望能够向工单添加多个评论。在您设置表的方式中,这是不可能的,因为您将 ticket_id 设置为主键。

您应该将 ConversationTable 中的 id 设置为主键,并将 ticket_id 设置为 Ticket 的外键表 ticket_id,因为一张票可以有多个评论

CREATE TABLE IF NOT EXISTS `Tickets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`email` varchar(50) NOT NULL,
`ticket_id` varchar(30) NOT NULL,
`ticket_question` varchar(255) NOT NULL,
`ticket_status` tinyint(1) NOT NULL DEFAULT '0',
`ticket_creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ticket_id`),
UNIQUE KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `Conversation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ticket_id` varchar(30) NOT NULL,
`ticket_comments` varchar(255) NOT NULL,
`ticket_latest_reply` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
CONSTRAINT `fk_tickets` FOREIGN KEY (`ticket_id`) REFERENCES `Tickets`(`ticket_id`) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

注意:如果您现在在您的工单表中删除一个 ticket_id,这将删除与该工单相关的所有评论(ON DELETE CASCADE)

在这种情况下,每个评论都存储在这个表中。

如果你想把对话作为一个单独的对话,你需要一个额外的表来保存所有的评论,并通过 ID 链接 Conversation 表中的评论,就像用 ticket_comment 你做的那样做了以上。

CREATE TABLE IF NOT EXISTS `Tickets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`email` varchar(50) NOT NULL,
`ticket_id` varchar(30) NOT NULL,
`ticket_question` varchar(255) NOT NULL,
`ticket_status` tinyint(1) NOT NULL DEFAULT '0',
`ticket_creation_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ticket_id`),
UNIQUE KEY (`id`),
UNIQUE KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `Conversation` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ticket_id` varchar(30) NOT NULL,
`comment_id` int(11) NOT NULL,
`ticket_latest_reply` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY (`ticket_id`, `comment_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `Comments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`comment` varchar(255) NOT NULL,
`comment_last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

也许可以考虑将 ticket_id 设置为 Tickets 中的主键。当它是唯一的时,您也可以将它用作主键。

关于mysql - 票务系统 : sql tables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com