选择型题目表设计。
场景:用户参与答题活动,可以多次回答,每次选择随机题目,题目都是单项选择题,表设计如下。
题目表
CREATE TABLE `question` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(512) COLLATE utf8mb4_bin NOT NULL,
`create_at` datetime DEFAULT NULL,
`create_by` bigint(20) DEFAULT NULL,
`status` int(11) DEFAULT NULL,
`update_at` datetime DEFAULT NULL,
`update_by` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
题目选项表
CREATE TABLE `question_option` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`question_id` bigint(20) NOT NULL,
`content` varchar(512) COLLATE utf8mb4_bin DEFAULT NULL,
`is_answer` tinyint(1) NOT NULL,
`status` int(11) DEFAULT NULL,
`create_at` datetime DEFAULT NULL,
`create_by` bigint(20) DEFAULT NULL,
`update_at` datetime DEFAULT NULL,
`update_by` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
用户回答表
CREATE TABLE `question_answer` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) DEFAULT NULL,
`question_id` bigint(20) NOT NULL,
`option_id` bigint(20) DEFAULT NULL,
`history_id` bigint(20) NOT NULL,
`status` int(11) DEFAULT NULL,
`update_at` datetime DEFAULT NULL,
`update_by` bigint(20) DEFAULT NULL,
`create_at` datetime DEFAULT NULL,
`create_by` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `index_question_id` (`question_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
用户回答记录表
CREATE TABLE `question_answer_history` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) DEFAULT NULL,
`answer_finish` tinyint(1) NOT NULL,
`correct_rate` double DEFAULT NULL,
`time_consumed` int(11) DEFAULT NULL,
`status` int(11) DEFAULT NULL,
`create_at` datetime DEFAULT NULL,
`create_by` bigint(20) DEFAULT NULL,
`create_at_millisecond` int(3) DEFAULT NULL COMMENT '创建时间毫秒值',
`update_at` datetime DEFAULT NULL,
`update_by` bigint(20) DEFAULT NULL,
`update_at_millisecond` int(3) DEFAULT NULL COMMENT '更新时间毫秒值',
`time_consumed_millisecond` int(3) DEFAULT NULL COMMENT '更新时间毫秒值',
PRIMARY KEY (`id`),
KEY `index_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
其中,记录了答题的正确率和耗时,排名按照正确率最高及耗时最少排序。