请教一个类似问卷网的数据库设计问题

数据库设计问题请教#

打算做一个类似问卷网的工具,不同的用户可以创建不同的问卷,不同的问卷的表单多少类型都是不一致的,
例如用户 A 创建了问卷 1, 问卷有 text 文本框 name 有 text 文本框 age 有 text 文本框 tel 有 select 选择框 A\B\C\E.
然后用户 B 又创建了问卷 2, 有 text 文本框 name 然后有一个 text 文本框 map 有 radio 选择 sex 男 1 女 0;
那么这种情况如何设计数据库会比较合理?没有想到很好的方法…

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7

用一个数据表的 json 字段去存你的问卷内容 或者用一张一对多的关系表来存你的问卷内容

4年前 评论
kangfq (楼主) 4年前

问卷表,题目类型表(text,radio,select...)。题目表(可以每一题都存一条数据,也可以所有题目 json 后存到一条数据里面)

4年前 评论

试卷表 Table_A 问题表 Table_B 试卷问题关系表 Table_A_Table_B

如果需要展示一张卷子只需要

select * from Table_B as B join Table_A_Table_B   as ab on  ab.b_id = b.id where b.id = ?
4年前 评论

鄙人以为

对于预定义的表单类型,放在 json 里即可。

对于数据的存储,分两方面

  • 可直接被搜索,一行记录对应一个表单类型
  • 非必要,放在 json 里即可
4年前 评论

问卷表 (question):
user_id、type、title

问卷答案表 (question_answer):
question_id、answer

用户提交答案表 (answer):
user_id、question_id、question_answer_id、answer

4年前 评论
kangfq (楼主) 4年前

有一种思路,动态建表。。。a_1 表 a_2 表

4年前 评论
kangfq (楼主) 4年前

直接 string 吧,业务上来了再考虑效率问题

4年前 评论