选择题型题目表设计

选择型题目表设计。
场景:用户参与答题活动,可以多次回答,每次选择随机题目,题目都是单项选择题,表设计如下。
题目表

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;

其中,记录了答题的正确率和耗时,排名按照正确率最高及耗时最少排序。

你可能感兴趣的:(MySQL)