问卷表数据库设计是否合理?
问卷主表:
问题表:
选项表:
回答表:
其中选项表中文本类型问题的时候只存储类型,不存item_val
答案表中item_val如果是多选,单选 直接存储的是选项表ID,问答题的话直接就是回答内容,那么
1:统计每个问题每个选项回答人数多少这个sql如何来写 最优方式
实现如下格式
因为不能传附件,附上sql
/*
SQLyog Ultimate v11.24 (32 bit)
MySQL - 5.0.67-community-nt : Database - questionnaire
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`questionnaire` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `questionnaire`;
/*Table structure for table `t_answer` */
DROP TABLE IF EXISTS `t_answer`;
CREATE TABLE `t_answer` (
`id` bigint(20) NOT NULL auto_increment COMMENT '系统ID',
`survey_id` bigint(20) default NULL COMMENT '问卷填写情况主表ID',
`question_id` bigint(10) default NULL COMMENT '问题ID',
`item_val` varchar(220) default NULL COMMENT '回答内容',
`iseq_id` bigint(1) default NULL COMMENT '20',
`item_type` int(11) default NULL COMMENT '类型',
`pid` int(11) default NULL COMMENT '记录答卷的 个数',
`sessid` varchar(40) default NULL COMMENT 'sessionid',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='问卷填写情况明细表';
/*Data for the table `t_answer` */
insert into `t_answer`(`id`,`survey_id`,`question_id`,`item_val`,`iseq_id`,`item_type`,`pid`,`sessid`) values (1,1,1,'1',1,1,1,'qqq'),(2,1,2,'4',1,2,1,'qq'),(3,1,2,'5',1,2,1,'qq'),(4,1,2,'6',1,2,1,'qq'),(5,1,3,'1',1,1,1,'22'),(6,1,4,'你们很好啊',1,3,1,'22');
/*Table structure for table `t_options` */
DROP TABLE IF EXISTS `t_options`;
CREATE TABLE `t_options` (
`id` bigint(10) NOT NULL auto_increment,
`survey_id` bigint(10) default NULL COMMENT '调查Id',
`question_id` bigint(10) default NULL COMMENT '问题Id',
`item_type` int(10) default NULL COMMENT '题目类型',
`item_val` varchar(220) default NULL COMMENT '选项内容',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
/*Data for the table `t_options` */
insert into `t_options`(`id`,`survey_id`,`question_id`,`item_type`,`item_val`) values (1,1,1,1,'用过'),(2,1,1,1,'没用过'),(3,1,2,2,'洗面奶'),(4,1,2,2,'护肤霜'),(5,1,2,2,'护手霜'),(6,1,2,2,'沐浴露'),(7,1,3,1,'满意'),(8,1,3,1,'不满意'),(10,1,4,3,'文本题');
/*Table structure for table `t_question` */
DROP TABLE IF EXISTS `t_question`;
CREATE TABLE `t_question` (
`id` bigint(20) NOT NULL auto_increment COMMENT '主键',
`survey_id` bigint(20) default NULL COMMENT '主表survey id',
`iseq` bigint(10) default NULL COMMENT '序号 后台处理,界面不显示,用于排序,显示为第几题',
`item_title` varchar(4000) default NULL COMMENT '题目名称',
`item_type` char(2) default NULL COMMENT '题目类型 0:单选项目 1:多选项目 2:文本项目',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='问卷项目明细表';
/*Data for the table `t_question` */
insert into `t_question`(`id`,`survey_id`,`iseq`,`item_title`,`item_type`) values (1,1,1,'您使用过我们的产品吗?','1'),(2,1,2,'您用过我们的那些产品','2'),(3,1,3,'您对我们的产品满意吗?','1'),(4,1,4,'您怎么评价我们的产品','3'),(5,1,5,'您给我们的产品打几分?','4');
/*Table structure for table `t_survey` */
DROP TABLE IF EXISTS `t_survey`;
CREATE TABLE `t_survey` (
`id` bigint(20) NOT NULL auto_increment COMMENT '主键',
`title` varchar(400) default NULL COMMENT '问卷主题',
`remark` varchar(4000) default NULL COMMENT '备注',
`anonymous` char(1) default NULL COMMENT '匿0: 非匿名 1:匿名名标志',
`is_ok_look` char(1) default NULL COMMENT '完成后允许查看结果0:允许 1:不允许',
`valid_period` bigint(10) default NULL COMMENT '发布后几天内有效',
`start_time` datetime default NULL COMMENT '调查问卷发布的起始时间',
`end_time` datetime default NULL COMMENT '调查问卷结束时间',
`creator` bigint(22) default NULL COMMENT '发布人',
`release_time` datetime default NULL COMMENT '发布日期',
`valid_flag` char(1) default NULL COMMENT '有效标志 0:无效 1:无效 ',
`survey_type` bigint(10) default NULL COMMENT '问卷类型 dm_survey_type',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='问卷项目主表';
/*Data for the table `t_survey` */
insert into `t_survey`(`id`,`title`,`remark`,`anonymous`,`is_ok_look`,`valid_period`,`start_time`,`end_time`,`creator`,`release_time`,`valid_flag`,`survey_type`) values (1,'客户满意度调查','满意度调查','1','1',20,'2014-11-07 11:03:09','2014-11-07 11:03:12',1,'2014-11-07 11:03:15','1',1);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
其实,在数据库的设计上,不存在绝对的合理。
重中之重是体现在用户体验上,还有是否达到用户的要求。
就你这些截图和代码来看,实现问卷是没有什么问题的。
不明白為啥要多一個回答表,
我認為可以這樣試試吧
問卷表 : 存儲問卷大概內容, 如(id, 大標題, 問卷時間, 問卷負責人, 問卷的section數量, 問卷創建時間, 刪除時間, 問卷備註, 填表人 .... )
section表 問卷當中具體幾個大塊的問題吧 : (id, 問卷表id(關聯問卷), section當中的questions數量, sectionc創建時間, 刪除時間....)
question表 具體的問題 : (id , section Id(關聯section), 問題, 答案, 創建時間, 刪除時間, 創建人, ....)
貌似這樣 就不需要在單獨創建一個回答表了吧.
希望對你有用
- 等 最代码怎么获取牛币啊?
- 完 谁来告诉我最代码上线的时间,答对者给5牛币,先来先得
- 等 牛友们,大家好,你们做程序员多久了?现在还好吗?
- 完 在微信打开的页面里进行app下载
- 等 最代码2014年欢乐聚声会
- 完 mysql如何查询表数据并且对3个字段降序的SQL?
- 完 最代码牛币机制改革
- 完 成功的在bae上使用了自定义运行环境 jetty+nginx的组合,大家对jetty+nginx优化有哪些心得?
- 完 进来分享一下各位牛牛是如何加入最代码大家庭的?
- 等 为什么java BufferedImage类处理大图直接抛出内存溢出的异常?
- 等 最代码是否开发手机app客户端?
- 完 java程序员学习哪些java的技术?java有哪些框架?都能做哪方面的开发?
- 等 php格式网页文件怎么运行?
- 等 Java volatile值获取的问题
- 等 前端vue,拦截了登录后台后,返回的token,requests拦截token,但是发送请求的时候,就出现跨越异常
- 等 大专本科计算机科班怎么找到Java工作?
- 等 eclipse怎么把三个java swing游戏项目合成一个项目?
- 完 伙伴们,大家都有什么好的解压方式么,分享一下~
- 完 三四线城市,6、7k,运维工作,索然无味,想去辞职上培训,各位牛牛有什么建议嘛
- 等 jsp页面输入中文变成问号
- 等 JPA在线上运行一段时间后报错Caused by: java.lang.IncompatibleClassChangeError: null
- 等 PHP 这个规则用preg_match_all怎么写
- 等 大佬们,有没有知道Alfresco如何配置LDAP登录呢?
- 等 php的install目录是框架带的吗?