/**
  mysql
 */

/*==============================================================*/
/* Table: EXM_QUESTION                                          */
/*==============================================================*/
create table EXM_QUESTION
(
    ID                   int not null auto_increment comment '主键',
    TYPE                 int comment '类型（1：单选；2：多选；3：填空；4：判断；5：问答）',
    TITLE                text comment '题干',
    MARK_TYPE            int comment ' 阅卷类型（1：客观题；2：主观题）',
    MARK_OPTIONS         varchar(8) comment ' 阅卷选项（2：答案无顺序；3：不分大小写；)',
    ANALYSIS             text comment '解析',
    SCORE                decimal(5,2) comment '默认分值',
    STATE                int comment '状态（0：删除；1：发布；）',
    QUESTION_TYPE_ID     int comment '试题分类ID',
    CREATE_USER_ID       int comment '创建用户ID',
    UPDATE_USER_ID       int comment '修改用户ID',
    UPDATE_TIME          datetime comment '修改时间',
    primary key (ID)
);

alter table EXM_QUESTION comment '试题';

/*==============================================================*/
/* Table: EXM_QUESTION_ANSWER                                   */
/*==============================================================*/
create table EXM_QUESTION_ANSWER
(
    ID                   int not null auto_increment comment '主键',
    ANSWER               text comment '一个答案有多个同义词用\n分隔',
    SCORE                decimal(5,2) comment '分值',
    QUESTION_ID          int not null comment '试题ID',
    NO                   int comment '排序',
    primary key (ID)
);

alter table EXM_QUESTION_ANSWER comment '试题答案';

/*==============================================================*/
/* Table: EXM_QUESTION_OPTION                                   */
/*==============================================================*/
create table EXM_QUESTION_OPTION
(
    ID                   int not null auto_increment comment '主键',
    OPTIONS              text comment '选项（option是关键字）',
    NO                   int comment '排序',
    QUESTION_ID          int not null comment '试题ID',
    primary key (ID)
);

alter table EXM_QUESTION_OPTION comment '试题选项';

/*==============================================================*/
/* Table: EXM_QUESTION_TYPE                                     */
/*==============================================================*/
create table EXM_QUESTION_TYPE
(
    ID                   int not null auto_increment comment '主键',
    NAME                 varchar(32) comment '名称',
    CREATE_USER_ID       int comment '创建用户ID',
    UPDATE_USER_ID       int comment '修改用户ID',
    UPDATE_TIME          datetime comment '修改时间',
    primary key (ID)
);

alter table EXM_QUESTION_TYPE comment '题库';

/*==============================================================*/
/* Table: EXM_PAPER                                             */
/*==============================================================*/
create table EXM_PAPER
(
    ID                   int not null auto_increment comment '主键',
    NAME                 varchar(32) comment '名称',
    PASS_SCORE           decimal(5,2) comment '及格分数（%）',
    TOTAL_SCORE          decimal(5,2) comment '总分数',
    MARK_TYPE            int comment '阅卷方式（1：智能阅卷；2：人工阅卷；）数据字典：PAPER_MARK_TYPE',
    SHOW_TYPE            int comment '展示方式（1：整卷展示；2：章节显示；3：单题展示；）数据字典：PAPER_SHOW_TYPE',
    READ_REMARK          text comment '考前阅读',
    READ_NUM             int comment '阅读时长（分）',
    STATE                int comment '0：删除；1：发布；2：草稿；3：归档',
    PAPER_TYPE_ID        int not null comment '试卷分类ID',
    GEN_TYPE             int comment '组卷方式（1：人工组卷；2：随机组卷）',
    OPTIONS              varchar(32) comment '1：试题乱序；2：选项乱序；3：禁用右键；4：禁止复制；5：最小化警告',
    MINIMIZE_NUM         int comment '最小化警告次数（OPTIONS=5有效）',
    CREATE_USER_ID       int comment '创建人',
    CREATE_TIME          datetime comment '创建时间',
    UPDATE_USER_ID       int comment '修改人',
    UPDATE_TIME          datetime comment '修改时间',
    primary key (ID)
);

alter table EXM_PAPER comment '试卷';

/*==============================================================*/
/* Table: EXM_PAPER_QUESTION                                    */
/*==============================================================*/
create table EXM_PAPER_QUESTION
(
    ID                   int not null auto_increment comment 'id',
    NAME                 varchar(32) comment '章节名称',
    DESCRIPTION          varchar(512) comment '章节描述',
    PARENT_ID            int comment '父ID',
    PARENT_SUB           varchar(512) comment '父子关系（格式：_父ID_子ID_子子ID_... ...）',
    UPDATE_USER_ID       int comment '修改人',
    UPDATE_TIME          datetime comment '修改时间',
    PAPER_ID             int comment '试卷ID',
    QUESTION_ID          int comment '试题ID',
    TYPE                 int comment '1：章节；2：固定试题；3：随机试题',
    SCORE                decimal(5,2) comment '分数',
    AI_OPTIONS           varchar(8) comment '智能选项（1：漏选得分；2：答案无顺序；3：大小写不敏感；)',
    NO                   int comment '排序',
    EXAM_ID              int comment '考试ID（随机试卷有效）',
    USER_ID              int comment '用户ID（随机试卷有效）',
    primary key (ID)
);

alter table EXM_PAPER_QUESTION comment '试卷试题';

/*==============================================================*/
/* Table: EXM_PAPER_QUESTION_RULE                               */
/*==============================================================*/
create table EXM_PAPER_QUESTION_RULE
(
    ID                   int not null auto_increment comment 'id',
    QUESTION_TYPE_ID     int comment '试题分类ID',
    TYPE                 int comment '1：单选；2：多选；3：填空；4：判断；5：问答',
    DIFFICULTYS          varchar(16) comment '1：极易；2：简单；3：适中；4：困难；5：极难',
    AIS                  varchar(16) comment '智能阅卷',
    AI_OPTIONS        	varchar(8) comment '1：漏选得分；2：答案无顺序；3：大小写不敏感；',
    NUM                  int comment '题数',
    SCORE                decimal(5,2) comment '分数',
    PAPER_ID             int comment '试卷ID',
    PAPER_QUESTION_ID    int comment '试卷试题ID',
    NO                   int comment '排序',
    UPDATE_USER_ID       int comment '修改人',
    UPDATE_TIME          datetime comment '修改时间',
    primary key (ID)
);

alter table EXM_PAPER_QUESTION_RULE comment '试卷试题规则';

/*==============================================================*/
/* Table: EXM_PAPER_QUESTION_ANSWER                             */
/*==============================================================*/
create table EXM_PAPER_QUESTION_ANSWER
(
    ID                   int not null auto_increment,
    ANSWER               text comment '一个答案有多个同义词用\n分隔',
    SCORE                decimal(5,2) comment '分值',
    PAPER_ID             int comment '试卷ID',
    EXAM_ID              int comment '考试ID（随机试卷有效）',
    USER_ID              int comment '用户ID（随机试卷有效）',
    QUESTION_ID          int comment '试题ID',
    QUESTION_TYPE        int comment '试题类型',
    QUESTION_AI          int comment '试题智能类型',
    PAPER_QUESTION_ID    int comment '试卷试题ID',
    NO                   int comment '排序',
    primary key (ID)
);

alter table EXM_PAPER_QUESTION_ANSWER comment '试卷试题答案';

/*==============================================================*/
/* Table: EXM_PAPER_REMARK                                      */
/*==============================================================*/
create table EXM_PAPER_REMARK
(
    ID                   int not null auto_increment comment '主键',
    SCORE                decimal(5,2) comment '分数（百分比）',
    REMARK               varchar(32) comment '评语',
    NO                   int comment '排序',
    PAPER_ID             int not null comment '试卷ID',
    primary key (ID)
);

alter table EXM_PAPER_REMARK comment '试卷评语';

/*==============================================================*/
/* Table: EXM_PAPER_TYPE                                        */
/*==============================================================*/
create table EXM_PAPER_TYPE
(
    ID                   int not null auto_increment comment 'id',
    NAME                 varchar(32) comment '名称',
    IMG_FILE_ID          int comment '图片ID',
    CREATE_USER_ID       int comment '创建人',
    CREATE_TIME          datetime comment '创建时间',
    UPDATE_USER_ID       int comment '修改人',
    UPDATE_TIME          datetime comment '修改时间',
    STATE                int comment '0：删除；1：正常',
    READ_USER_IDS        varchar(1024) comment '读权限',
    primary key (ID)
);

alter table EXM_PAPER_TYPE comment '试卷分类';

/*==============================================================*/
/* Table: EXM_EXAM                                              */
/*==============================================================*/
create table EXM_EXAM
(
    ID                   int not null auto_increment comment '主键',
    NAME                 varchar(32) comment '名称',
    PAPER_NAME           varchar(32) comment '试卷名称',
    GEN_TYPE             int comment '组卷方式（1：人工组卷；2：随机组卷）数据字典：PAPER_GEN_TYPE',
    MARK_TYPE            int comment '阅卷方式（1：客观题；2：主观题；）数据字典：PAPER_MARK_TYPE',
    SHOW_TYPE            int comment '展示方式（1：整卷展示；3：单题展示；）数据字典：PAPER_SHOW_TYPE',
    START_TIME           datetime comment '考试开始时间',
    END_TIME             datetime comment '考试结束时间',
    LIMIT_MINUTE         int comment '限制分钟（考试开始时间由用户第一次打开试卷时计时）',
    MARK_START_TIME      datetime comment '阅卷开始时间',
    MARK_END_TIME        datetime comment '阅卷结束时间',
    MARK_STATE           int comment '阅卷状态（1：未阅卷；2：阅卷中；3：已阅卷；）',
    SCORE_STATE          int comment '成绩查询状态（1：考试结束后；2：不公布；3：交卷后）',
    RANK_STATE           int comment '排名状态（1：公布；2：不公布）',
    ANON_STATE           int comment '匿名阅卷状态（1：是；2：否）',
    PASS_SCORE           decimal(5,2) comment '及格分数',
    TOTAL_SCORE          decimal(5,2) comment '总分数',
    SXES                 varchar(32) comment '反作弊（1：试题乱序；2：选项乱序；）',
    STATE                int comment '状态（0：删除；1：发布；2：暂停；）',
    CREATE_USER_ID       int comment '创建用户ID',
    UPDATE_USER_ID       int comment '修改用户ID',
    UPDATE_TIME          datetime comment '修改时间',
    primary key (ID)
);

alter table EXM_EXAM comment '考试';

/*==============================================================*/
/* Table: EXM_EXAM_QUESTION                                     */
/*==============================================================*/
create table EXM_EXAM_QUESTION
(
    ID                   int not null auto_increment comment '主键',
    CHAPTER_NAME         varchar(32) comment '章节名称',
    CHAPTER_TXT          varchar(512) comment '章节描述',
    TYPE                 int comment '类型 （1：章节；2：试题）',
    SCORE                decimal(5,2) comment '分数',
    SCORES               varchar(64) comment '子分数',
    MARK_OPTIONS         varchar(8) comment '阅卷选项（2：答案无顺序；3：不分大小写；)',
    EXAM_ID              int comment '考试ID',
    QUESTION_ID          int comment '试题ID',
    NO                   int comment '排序',
    OPTIONS_NO           varchar(16) comment '选项排序',
    UPDATE_USER_ID       int comment '修改用户ID',
    UPDATE_TIME          datetime comment '修改时间',
    primary key (ID)
);

alter table EXM_EXAM_QUESTION comment '考试试题（固定试卷有效）';

/*==============================================================*/
/* Table: EXM_EXAM_RULE                                         */
/*==============================================================*/
create table EXM_EXAM_RULE
(
    ID                   int not null auto_increment comment '主键',
    CHAPTER_NAME         varchar(32) comment '章节名称',
    CHAPTER_TXT          varchar(512) comment '章节描述',
    TYPE                 int comment '类型 （1：章节；2：试题）',
    QUESTION_TYPE_ID     int comment '题库ID',
    QUESTION_TYPE        int comment '类型（1：单选；2：多选；3：填空；4：判断；5：问答）',
    MARK_TYPE            int comment '阅卷类型（1：客观题；2：主观题）',
    MARK_OPTIONS         varchar(8) comment '阅卷选项   （2：答案无顺序；3：不分大小写；）',
    NUM                  int comment '题数',
    SCORE                decimal(5,2) comment '分数',
    SCORES               decimal(5,2) comment '子分数（多选有效；主观填空问答按空平均分配分数）',
    EXAM_ID              int comment '考试ID',
    NO                   int comment '排序',
    UPDATE_USER_ID       int comment '修改用户ID',
    UPDATE_TIME          datetime comment '修改时间',
    primary key (ID)
);

alter table EXM_EXAM_RULE comment '考试抽题规则（随机试卷有效）';