一份简单的调查问卷数据库设计 您所在的位置:网站首页 调查问卷管理系统怎么做 一份简单的调查问卷数据库设计

一份简单的调查问卷数据库设计

2024-07-12 22:34| 来源: 网络整理| 查看: 265

背景

参考示例腾讯问卷

项目涉及到有关调查问卷的功能,参考了一些问卷网站的示例,大概了解了一下,一份简单的调查问卷包含哪些元素,它们之间存在哪些关联关系,由此设计出一份简单的数据库表结构。

一份问卷的基本元素

调查问卷主表 CREATE TABLE `survey_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `survey_name` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '主题', `survey_description` varchar(1000) CHARACTER SET utf8 DEFAULT NULL COMMENT '描述', `start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '开始时间', `end_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '结束时间', `status` char(1) CHARACTER SET utf8 NOT NULL DEFAULT '0' COMMENT '0 发布 1 暂存 2已结束 3已失效', `survey_sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序', `top_flag` char(1) CHARACTER SET utf8 NOT NULL DEFAULT '1' COMMENT '0 置顶 1不置顶', `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `creator_id` int(11) NOT NULL COMMENT '创建人员ID', `updator_id` int(11) NOT NULL COMMENT '更新人员ID', `survey_pic_id` int(11) DEFAULT NULL COMMENT '图片id', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=113 DEFAULT CHARSET=utf8mb4 COMMENT='调查问卷主表';

问卷主表比较简单,相关描述已注释。

问题主表 CREATE TABLE `question_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `survey_id` int(11) NOT NULL COMMENT '关联调查问卷主表ID', `question_type` char(1) CHARACTER SET utf8 NOT NULL DEFAULT '1' COMMENT '1 单选 2多选 3填空', `question_name` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '问题主题', `question_description` varchar(1000) CHARACTER SET utf8 DEFAULT NULL, `question_sort` int(11) DEFAULT '0' COMMENT '排序', `required_flag` char(1) CHARACTER SET utf8 DEFAULT '0' COMMENT ' 0 必填 1非必填', `question_pic_id` int(11) DEFAULT NULL COMMENT '图片id', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=212 DEFAULT CHARSET=utf8mb4 COMMENT='调查问卷问题主表';

问题主表,关联问卷主键ID

选项表 CREATE TABLE `option_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `survey_id` int(11) NOT NULL COMMENT '调查问卷ID', `question_id` int(11) NOT NULL COMMENT '问题ID', `option_name` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '选项名称', `option_sort` int(11) NOT NULL, `option_pic_id` int(11) DEFAULT NULL COMMENT '图片id', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=518 DEFAULT CHARSET=utf8mb4 COMMENT='调查问卷问题选项主表';

问题类型是天空的不需要往选项表里插入内容

到此一份简单的调查问卷基本完成

一份问卷不只是看看

有了问卷之后,我们就需要填写问卷,因此我们还需要一份调查问卷的答案表

答案主表 CREATE TABLE `answer_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userid` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '成员id', `survey_id` int(11) NOT NULL COMMENT '问卷主表ID', `question_id` int(11) NOT NULL COMMENT '问题主表ID', `create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=140 DEFAULT CHARSET=utf8mb4 COMMENT='用户答案表'; 答案子表 CREATE TABLE `answer_option_relation` ( `id` int(11) NOT NULL AUTO_INCREMENT, `answer_id` int(11) NOT NULL COMMENT '答案主表id', `option_id` int(11) DEFAULT NULL COMMENT '选项主表id', `option_content` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '答案内容', `answer_pic_id` int(11) DEFAULT NULL COMMENT '图片id', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=207 DEFAULT CHARSET=utf8mb4;

其实两张表可以合并为一张表。问题类型为填空时,答案也不仅限为问题描述,也可能是一张图,这里也可以直接放图片的链接地址,避免再关联去查图片的链接;

统计

作为用户来说,不能像纸质时代那样,一份份自己去统计,因此我们需要给用户一份统计结果展示。个人没有去设计统计表的数据表结构,仅仅是通过关联查询得出的结果来给用户展示。这里提供两个思路:

像我一样关联去查设计一份调查问卷的结果统计表,你可以写一个job在调查问卷截止的时候去做结果统计然后插入到这张表中。用户查看结果的时候,直接从这张表里取数据即可。


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有