数据库的表结构设计
问卷的角色

一份问卷从创建到结束发生了什么:
- 管理员创建问卷(创建表并插入问题)
- 用户查看问卷(查询表)
- 用户填写表(插入问答)
- 管理员查询问卷结果(查询表)
表格的设计
知道了问卷整个生命周期后,看一下问卷系统需要几张表:
首先需要一张问卷表,问卷表中记录了问卷的内容。
由于问卷是多人回答的,每个人的答案不会改变问卷本身的内容,所以问卷表和答卷表信息是相对独立的,因此我们需要一张答卷表。
除了这张表,还需要一张常规的用户表。user表(用户表)

questionnaire表(问卷表)
replay(回复表)
```sql
DROP Table if EXISTS user;
CREATE TABLE user (
id VARCHAR (40)NOT NULL,
login_name VARCHAR (20) NOT NULL,
password VARCHAR(50) NOT NULL,
mobile VARCHAR(20) NOT NULL,
email VARCHAR(50) ,
name VARCHAR(50) NOT NULL,
gender VARCHAR(10) NOT NULL,
gmt_created datetime ,
gmt_modified datetime ,
PRIMARY KEY ( id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP Table if EXISTS questionnaire;
CREATE TABLE questionnaire (
id VARCHAR (40)NOT NULL,
title VARCHAR (40) NOT NULL,
description TEXT NOT NULL,
status VARCHAR(20) NOT NULL,
content TEXT NOT NULL,
author VARCHAR(40) NOT NULL,
gmt_created datetime ,
gmt_modified datetime ,
PRIMARY KEY ( id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP Table if EXISTS reply;
CREATE TABLE reply (
id VARCHAR (40)NOT NULL,
ques_id VARCHAR (40) NOT NULL,
ques_index int(20) NOT NULL,
user_id VARCHAR(40) NOT NULL,
content TEXT NOT NULL,
gmt_created datetime ,
gmt_modified datetime ,
PRIMARY KEY ( id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
查询在user表,但是没有在replay表和questionnaire表中的人。```sqlSELECT*FROMuserLEFT JOIN reply on user.id = reply.user_idLEFT JOIN questionnaire on user.id = questionnaire.authorWHEREreply.user_id IS NULL AND questionnaire.author IS NULL;
