面试题数据库设计

面试题库需求

  1. 题目

    1. 可以创建 单选、多选、填空、多选且需有顺序、迫选题、引用类型·表格、Javascript编程题、HTML编程题、问答题;(题型)

    2. 可以区分难度(非必要,1: 非常简单,2: 简单,3: 中等,4: 难,5: 非常难)

    3. 可以区分一级分类(例:前端、后端、心理测试等)

    4. 可以区分二级分类(例:前端:逻辑题、编程题等)

    5. 有标准答案的题目,用户可以录入答案,用于系统自动批改【待定】

  2. 试卷

    1. 可以按照题型、难度、一级分类、二级分类筛选题目,用户自行组合题目生成试卷

    2. 可以根据用户给定的题型分布、难度分布、一级分类、二级分类分布随机抽取题目生成试卷

  3. 其他

    1. 提交试卷后自动批改【待定】

    2. 相关结果提交到内部群

流程

  1. 生成面试任务流程:创建/编辑题目草稿 --> 发布题目 --> 创建/编辑试卷 -->

发布试卷 --> 选择试卷(可多份)新建面试任务

  1. 面试官把面试任务生成的试卷链接发给面试者

  2. 面试者提交问卷,系统初步批改【待定】,发到内部微信群

后续拓展功能

  1. 系统自动批改

  2. 新建试卷时自定义跳题功能

ER图

数据库表

question_bank[面试题库]
字段类型备注说明
question_idvarchar(32)题目id
requiredtinyint(1)是否必填
max_choicestinyint(4)最多可选
min_choicestinyint(4)最少可选
question_typetinyint(4)问题类型0:单选;1:多选;2:填空;3:多选且需有顺序;4:迫选题;5: 引用类型·表格;7:Javascript编程题;8:HTML编程题;9:问答题;
question_classtinyint(4)问题分类0:前端
question_contentvarchar(1000)题目描述题目附加描述,富文本
create_timedatetime创建时间
creator_namevarchar(50)创建者名称
question_column_idvarchar(32)题目一级分类
question_class_idvarchar(32)题目二级分类
difficultytinyint(4)题目难度0:未设置,1: 非常简单,2: 简单,3: 中等,4: 难,5: 非常难'
is_deltinyint(4)是否删除0: 否,1:是
CREATE TABLE `question_bank` (
  `question_id` varchar(32) NOT NULL DEFAULT '' COMMENT '题目id',
  `required` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否必填',
  `max_choices` tinyint(4) NOT NULL DEFAULT '0' COMMENT '最多可选(多选时有效);0:无限制',
  `min_choices` tinyint(4) NOT NULL DEFAULT '0' COMMENT '最少需选(多选时有效);0:不限制',
  `question_type` tinyint(4) NOT NULL COMMENT '问题类型;0:单选;1:多选;2:填空;3:多选且需有顺序;4:迫选题;5: 引用类型·表格;7:Javascript编程题;8:HTML编程题;9:问答题;',
  `question_class` tinyint(4) NOT NULL COMMENT '问题分类;0:前端',
  `question_content` varchar(1000) DEFAULT NULL COMMENT '题目描述;题目附加描述,富文本',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `creator_name` varchar(50) NOT NULL DEFAULT '' COMMENT '创建者名称',
  `question_column_id` varchar(32) NOT NULL DEFAULT '' COMMENT '题目一级分类',
  `question_class_id` varchar(32) NOT NULL DEFAULT '' COMMENT '题目二级分类',
  `difficulty` tinyint(4) NOT NULL DEFAULT '0' COMMENT '题目难度0:未设置,1: 非常简单,2: 简单,3: 中等,4: 难,5: 非常难',
  `is_del` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除 0: 否,1:是',

  PRIMARY KEY (`question_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='面试题目表';

question_choice[题目选项表]
字段类型备注说明
question_choice_idvarchar(32)题目选项id
question_idvarchar(32)题目id
question_choice_typetinyint(4)选项类型0:选择;1:填空
question_choice_contentvarchar(3000)选项内容
requiredtinyint(1)是否必选0-非必选;1-必选(当题目为多选时有效)
is_excludetinyint(1)是否互斥1/是 0/否
create_timedatetime创建时间
is_deltinyint(4)是否删除0:未删除,1:已删除

CREATE TABLE `question_choice` (
  `question_choice_id` varchar(32) NOT NULL DEFAULT '' COMMENT '题目选项id',
  `question_id` varchar(32) NOT NULL DEFAULT '' COMMENT '题目id',
  `question_choice_type` tinyint(4) NOT NULL COMMENT '选项类型 0:选择;1:填空',
  `question_choice_content` varchar(3000) NOT NULL DEFAULT '' COMMENT '选项内容',
  `required` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否必选:0-非必选;1-必选(当题目为多选时有效)',
  `is_exclude` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否互斥:1/是  0/否',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`is_del` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除0:未删除,1:已删除',

  PRIMARY KEY (`question_choice_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='题目选项表';

examination_questions[试卷试题关联表]
字段类型备注说明
examination_questions_idvarchar(32)流水号
examination_paper_idvarchar(32)试卷id
question_idvarchar(32)题目id
question_sorttinyint(11)题目排序
is_deltinyint(4)是否删除0:未删除,1:已删除
CREATE TABLE `examination_questions` (
  `examination_questions_id` varchar(32) NOT NULL COMMENT '流水号',
  `examination_paper_id` varchar(32) NOT NULL COMMENT '试卷id',
  `question_id` varchar(32) NOT NULL COMMENT '题目id',
  `question_sort` tinyint(11) NOT NULL COMMENT '题目排序',
  `is_del` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除0:未删除,1:已删除',
  PRIMARY KEY (`examination_questions_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='试卷试题关联表';
examination_paper[试卷表]
字段类型备注说明
examination_paper_idvarchar(32)试卷id
examination_paper_namevarchar(50)试卷名称
create_timedatetime创建时间
examination_paper_descriptionvarchar(1000)试卷描述
creator_namevarchar(50)创建者名称
revisor_namevarchar(50)更新者名称
update_timedatetime更新时间
question_column_idvarchar(32)试卷(题目)一级分类id
difficultytinyint(4)难度0:未设置,1: 非常简单,2: 简单,3: 中等,4: 难,5: 非常难
is_deltinyint(4)是否删除0:未删除,1:删除
CREATE TABLE `examination_paper` (
  `examination_paper_id` tinyint(32) NOT NULL COMMENT '试卷id',
  `examination_paper_name` varchar(50) NOT NULL DEFAULT '' COMMENT '试卷名称',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `examination_paper_description` varchar(1000) NOT NULL DEFAULT '' COMMENT '试卷描述',
  `creator_name` varchar(50) NOT NULL DEFAULT '' COMMENT '创建者名称',
  `revisor_name` varchar(50) NOT NULL DEFAULT '' COMMENT '更新者名称',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  `question_column_id` varchar(32) NOT NULL DEFAULT '' COMMENT '试卷(题目)一级分类id',
  `difficulty` tinyint(4) NOT NULL DEFAULT '0' COMMENT '难度0:未设置,1: 非常简单,2: 简单,3: 中等,4: 难,5: 非常难',
  `is_del` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除0:未删除,1:删除',

  PRIMARY KEY (`examination_paper_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='试卷表';
question_columns[题目一级分类列表]
字段类型备注说明
question_column_idVARCHAR(32)一级分类ID
question_column_nameVARCHAR(32)一级分类名称
create_timeDATETIME创建时间
is_deltinyint(4)是否删除0:未删除,1:已删除
CREATE TABLE question_columns(
    `question_column_id` VARCHAR(32) NOT NULL  DEFAULT '' COMMENT '一级分类ID' ,
    `question_column_name` VARCHAR(32) NOT NULL  DEFAULT '' COMMENT '一级分类名称' ,
    `create_time` DATETIME NOT NULL  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ,
    `is_del` tinyint(4) NOT NULL  DEFAULT 0 COMMENT '是否删除 0:未删除,1:已删除' ,
    PRIMARY KEY (question_column_id)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT = '题目一级分类列表';

question_classes[题目二级分类列表]
字段类型备注说明
question_class_idVARCHAR(32)二级分类ID
question_class_nameVARCHAR(32)二级分类名称
question_column_idVARCHAR(32)一级分类ID
create_timeDATETIME创建时间
is_deltinyint(4)是否删除0:未删除,1:已删除
CREATE TABLE question_classes(
    `question_class_id` VARCHAR(32) NOT NULL  DEFAULT '' COMMENT '二级分类ID' ,
    `question_class_name` VARCHAR(50) NOT NULL  DEFAULT '' COMMENT '二级分类ID名称' ,
    `question_column_id` VARCHAR(32) NOT NULL  DEFAULT '' COMMENT '一级分类ID' ,
    `create_time` DATETIME NOT NULL  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ,
    `is_del` tinyint(4) NOT NULL  DEFAULT 0 COMMENT '是否删除0:未删除,1:已删除' ,
    PRIMARY KEY (question_class_id)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT = '题目二级分类列表';

examination_task[面试任务]
字段类型备注说明
task_idVARCHAR(32)任务ID
task_nameVARCHAR(50)任务名称
examination_paper_idsVARCHAR(32)试卷ID,多个,逗号隔开
create_timeDATETIME创建时间
creator_nameVARCHAR(32)创建人名称
revisor_nameVARCHAR(32)更新人名称
update_timeDATETIME更新时间
is_deltinyint(4)是否删除0:未删除,1:已删除
CREATE TABLE examination_task(
    `task_id` VARCHAR(32) NOT NULL  DEFAULT '' COMMENT '任务ID' ,
    `task_name` VARCHAR(50) NOT NULL  DEFAULT '' COMMENT '任务名称' ,
    `examination_paper_ids` VARCHAR(32) NOT NULL  DEFAULT '' COMMENT '试卷ID,多个,逗号隔开' ,
    `created_time` DATETIME NOT NULL  DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ,
    `creator_name` VARCHAR(32) NOT NULL  DEFAULT '' COMMENT '创建人名称' ,
    `revisor_name` VARCHAR(32) NOT NULL  DEFAULT '' COMMENT '更新人名称' ,
    `update_time` DATETIME NOT NULL  DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间' ,
    `is_del` VARCHAR(1) NOT NULL  DEFAULT 0 COMMENT '是否删除0:未删除,1:已删除' ,
    PRIMARY KEY (task_id)
)  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT = '面试任务';