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

背景

参考示例腾讯问卷


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


一份问卷的基本元素

  • 调查问卷主表
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在调查问卷截止的时候去做结果统计然后插入到这张表中。用户查看结果的时候,直接从这张表里取数据即可。
  • 28
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
DWSurvey是一款方便、高效、实用,基于 JAVA WEB 的开源问卷表单系统。 特色: 1、全新体验、流程简单 以一种全新的设计体验,告别繁琐的设计流程,通过简单有趣的方式,轻轻松松完成问卷设计,多种问卷样式模板选择,只为显现更精美的表单问卷。 2、丰富的题型 丰富的题型支持,通过拖拽即可完成题目选择,并可以随意拖动其位置,还可置入所需图片、企业LOGO、设置答题逻辑,一份优美的问卷就是这么简单。 3、问卷表单静态化 对于问卷表单系统,因为所有的表单字段都是后台数据库来维护,所以对于每一次答卷请求,如果都从后端数据库去取每一题及选项的话,必定会对性能造成不小影响。 所以在发布的表单问卷时会对数据进行的页面静态化,生成一个真实的表单存档。 安装: 因为DWSurvey是基于JAVA WEB实现,所以安装与一般的JAVA WEB程序无异,配置好数据库地址就可以正常使用。 安装说明: 服务器必须安装由 JAVA 1.6+、MySQL、Apache Tomcat 构成的环境。 由于引用的外部jar在你本地maven仓库中可能没有,这时只要您本地有maven环境,执行下bin目录下面的文件就可以自动导入。   DWSurvey问卷调查系统 v3.2.0 更新日志: 1、解决使用高版本tomcat出现的 http 400 问题 因为高版本tomcat更安全,建议大家连tomcat一起升级到8.5.59以上 2、实现填空题数据类型验证,目前支持 Email,数字,整数,手机或电话,日期,邮政编码,电话号码等12种类型。 3、增加下拉选择题型 4、时间时间选择框 5、修复问卷的答卷计数问题。 6、导出数据有其它选项时位置未对齐问题。 5、持续优化系统功能,修复系统内已知问题,提升使用体验。
### 回答1: Java调查问卷数据库设计非常重要,合理的设计可以提高问卷调查的效率和数据的可靠性。在设计数据库结构时,需要考虑以下几个方面: 1. 表的设计:根据问卷调查的需求,设计合适的表结构,可以包括问卷表、问题表、选项表、用户表等。问卷表用于存储问卷的基本信息,问题表用于存储问卷中的问题信息,选项表用于存储问题的选项信息,用户表用于存储参与调查的用户信息等。 2. 表之间的关联:通过外键关联将表进行连接,以建立表与表之间的关系。例如,问卷表与问题表可以通过问卷ID进行关联,问题表与选项表可以通过问题ID进行关联,用户表与问卷表可以通过用户ID进行关联等,这样可以实现数据的一致性和完整性。 3. 数据字段的设计:在每个表中,需要合理设计字段,包括数据类型、长度、约束等。例如,对于问卷表,可以包括问卷ID、问卷名称、创建时间等字段,对于问题表,可以包括问题ID、问题内容、问题类型等字段,对于选项表,可以包括选项ID、选项内容、问题ID等字段。 4. 数据库优化:为了提高数据库的查询效率,需要合理创建索引。通过在经常进行查询的字段上创建索引,可以加快查询速度,提高系统的响应速度。 5. 数据库安全性:在数据库设计中,需要考虑数据的安全性,可以通过权限设置、数据加密等方式保护数据的安全性。 最后,数据库设计需要根据具体的业务需求和实际情况进行灵活调整,保证系统的可扩展性和稳定性。同时,还需考虑数据备份与恢复、故障处理等方面,以保证数据库的可靠性和稳定性。 ### 回答2: Java调查问卷数据库设计可以从几个方面考虑。首先,我们需要设计一个用户表用于存储用户的基本信息,包括用户名、密码、邮箱地址等。这个表可以用来实现用户的登录和注册功能,并确保用户的唯一性。 另外一个重要的表是问卷表,其中包含了关于问卷的相关信息,比如问卷的标题、描述、创建时间等。问卷表还可以包含一个外键,指向创建该问卷的用户ID,以建立用户和问卷之间的关系。 为了存储问卷的问题,我们可以设计一个问题表。问题表中可以包含问题的内容、类型、选项等信息。问题表与问卷表之间可以建立一对多的关系,即一个问卷可以包含多个问题。 为了记录用户对问卷的回答,可以设计一个回答表。回答表需要包含用户ID、问卷ID、问题ID和回答内容等字段。这样可以记录每个用户对每个问题的回答结果,并且便于后续的统计分析。 此外,可以设计一个结果表用于存储问卷的统计结果。这个表可以包含问题ID、选项ID、回答数量等字段,以便于计算每个问题的回答结果。 除了上述的主要表之外,还可以根据实际需求设计一些辅助表,比如选项表、用户角色表等,来优化数据的存储和查询效率。 总之,Java调查问卷数据库设计需要根据具体需求来确定表的结构和关系,同时考虑数据的完整性和一致性,以及性能和可扩展性等因素。 ### 回答3: Java调查问卷数据库设计是指使用Java编程语言设计和实现调查问卷系统的数据库数据库调查问卷系统中起着存储、管理和查询数据的作用。 在设计数据库时,需要考虑以下几个方面: 1. 数据库设计:根据系统需求,设计合适的数据表。通常包括问卷表、问题表、选项表和答案表等。问卷表用于存储问卷的基本信息,问题表用于存储问题的内容和类型,选项表用于存储问题的选项,答案表用于存储用户的答案。 2. 表之间的关系:确定不同表之间的关系,如一对多关系或多对多关系等。一般来说,问卷表与问题表之间是一对多关系,问题表与选项表之间也是一对多关系。 3. 主键和外键:确定每个表的主键和外键。主键用于唯一标识一条记录,外键用于建立表之间的关联关系。 4. 数据类型和约束:选择适当的数据类型和约束,以确保数据的完整性和一致性。例如,使用整型存储主键,使用字符串存储问卷标题,使用日期类型存储创建时间等。 5. 索引和性能优化:对重要的字段创建索引,以提高查询性能。此外,可以使用分区、分表等技术对数据库进行性能优化。 6. 数据库安全:设置合适的权限控制,以确保只有授权的用户才能访问和修改数据库中的数据。 在Java调查问卷系统中,可以使用JDBC或者ORM框架如Hibernate进行数据库访问。使用JDBC可以编写原生的SQL语句来操作数据库,而使用ORM框架可以更方便地进行对象关系映射,简化数据库操作。 总之,Java调查问卷数据库设计是根据系统需求和业务逻辑,设计合适的数据表和表之间的关系,并考虑数据类型、约束、索引、性能优化和安全等因素,以满足调查问卷系统的需求,提供高效、可靠的数据存储和查询功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值