乙個簡單的問卷調查服務端設計

2021-10-16 11:37:02 字數 4045 閱讀 3674

最近遇到個需求需要設計個問卷調查,包括發布問卷、選擇題型、提交問卷、統計選擇題的選項概率,所以就簡單設計了下。(備註:無題庫概念)

1、資料庫設計

問卷資訊表

drop table if exists `t_survey_info`;

create table `t_survey_info` (

`id` bigint(30) not null auto_increment,

`title` varchar(255) default null comment '標題',

`description` longtext comment '描述',

`is_read_only` varchar(1) default null comment '是否唯讀 1 是 0 否',

`del_flag` varchar(255) default null comment '是否有效 0 否 1 是',

`is_load` varchar(1) default null comment '上下架 0 否 1 是',

`operate_time` datetime default null comment '操作時間',

`operate_user` varchar(255) default null comment '操作使用者',

`begin_time` varchar(100) default null comment '開始時間',

`end_time` varchar(100) default null comment '結束時間',

`link_url` varchar(255) default null comment '問卷位址',

`link_key` varchar(255) default null comment '問卷key',

primary key (`id`) using btree,

key `index_link_key` (`link_key`)

) engine=innodb auto_increment=10 default charset=utf8mb4 row_format=dynamic comment='問卷資訊表';

問卷題目表

drop table if exists `t_survey_question`;

create table `t_survey_question` (

`id` bigint(30) not null auto_increment,

`question_title` varchar(255) default null comment '問題標題',

`question_type` varchar(255) default null comment '問題類別(單選 多選  問答)',

`question_content` longtext comment '問題內容(單選 多選)',

`operate_time` datetime default null comment '操作時間',

`operate_user` varchar(255) default null comment '操作使用者',

`del_flag` varchar(1) default null comment '是否有效 0 否 1 是',

`is_load` varchar(1) default null comment '上下架 0 否 1 是',

`is_required` varchar(1) default null comment '是否必填 0 否 1 是',

`survey_id` bigint(30) default null comment '問卷id',

`order_sort` int(10) default null comment '排序字段',

`total_num` int(10) default null comment '數量',

primary key (`id`) using btree,

key `index_survey_id` (`survey_id`) using btree

) engine=innodb auto_increment=103 default charset=utf8mb4 row_format=dynamic comment='問卷問題表';   

問卷題目選項表

drop table if exists `t_survey_item`;

create table `t_survey_item` (

`id` bigint(30) not null auto_increment,

`question_id` bigint(30) default null comment '問題id',

`survey_id` bigint(30) default null comment '問卷id',

`total_num` int(20) default null comment '總數量',

`question_type` varchar(100) default null comment '問題類別',

`choice_content` varchar(100) default null comment '選擇內容',

`percent_num` varchar(20) default null comment '百分比',

`choice_key` varchar(100) default null comment '內容key',

primary key (`id`) using btree,

key `index_question_id` (`question_id`) using btree,

key `index_survey_id` (`survey_id`) using btree,

key `index_choice_index` (`choice_content`,`question_type`) using btree

) engine=innodb auto_increment=160 default charset=utf8mb4 row_format=dynamic comment='問卷題目選項表';

問卷答案表

drop table if exists `t_survey_answer`;

create table `t_survey_answer` (

`id` bigint(30) not null auto_increment,

`question_id` bigint(30) default null comment '問題id',

`survey_id` bigint(30) default null comment '問卷id',

`choice_content` varchar(3000) default null comment '選擇(填寫內容)',

`user_id` varchar(30) default null comment '使用者id',

`user_name` varchar(255) default null comment '使用者名稱',

`operate_time` datetime default null comment '操作時間',

`question_type` varchar(255) default null comment '問題類別',

`phone` varchar(100) default null comment '手機號',

primary key (`id`) using btree,

unique key `index_question_id` (`question_id`,`survey_id`,`user_id`) using btree

) engine=innodb auto_increment=41 default charset=utf8mb4 row_format=dynamic comment='問卷答案表';

2、關鍵邏輯點

獲取問卷資訊頻繁,增加快取

問卷重複提交,利用redis  increment以及前端置灰色

每個選項數量+1 ,非同步執行緒

3、**展示

管理後台+介面,**不上傳,需自己實現!

socket手寫乙個簡單的web服務端

直接進入正題吧,下面的 都是我在pycharm中寫好,再貼上上來的 import socket server socket.socket server.bind 127.0.0.1 8080 注意bind是server的乙個方法,規定傳兩個引數,乙個是它基本本身,另乙個 就是ip埠位址,所以我們用元...

乙個簡單的客戶單與服務端程式

實驗環境是linux系統,效果如下 1.啟動服務端程式,監聽在6666埠上 2.啟動客戶端,與服務端建立tcp連線 3.建立完tcp連線,在客戶端上向服務端傳送訊息 4.斷開連線 實現的功能很簡單,但是對於初來乍到的我費了不少勁,因此在此總結一下,如有錯點請各位大神指點指點 什麼是socket 插口...

乙個簡單的服務端與客戶端TCP通訊

乙個簡單的服務端與客戶端tcp通訊 from socket import ip port 10.33.0.75 8000 定義建立連線的ip位址與ip埠 back log 5 設定連線池為2 buffer size 1024 設定每次傳送與接收的資料大小 tcp sever socket af in...