动态表单应该如何设计数据库?

需求是这样的

  1. 在后台管理界面录入表单信息,规定有哪些表单 (可以增删)
    clipboard.png

  2. 在前端显示哪些表单的可以填写

  3. 最后把填写的表单(产生的真实数据)存入数据库

  4. 最后填入的数据需要能够方便查询,排序,过滤的数据

我在网上找了挺多资料都不太符合我的需求。
有没有设计大神提供一下设计的思路!!!

阅读 27.7k
4 个回答

1、先定义一张控件表,如单行文本,多行文本,单选,多选,时间等
2、再定义一张配置表,用来定义一个Form有哪些字段,以及字段名字(用来显示,如姓名,性别),控件类型,字段默认值,字段长度,是否必填等信息
3、然后在后台把对应配置表添加的记录存到另一张记录表,记录表里存放的可能有多个单行文本,多个单选等记录(多余)
4、接着根据记录表的信息显示Form,
5、最后填写完Form提交的时候,再把填写的资料保存起来就可以了,
6、当需要显示填写的资料的时候,根据配置表和Form对应的记录,把相应的资料显示在对应的控件中


补充

clipboard.png

补充一下关于查询这块。基本思路和一楼一致。但是数据的筛选查询确实是一个问题 这样的话可以考虑加一个专门负责检索的表

clipboard.png

id 主键自增 search_id 是数据id filed_id 是 字段 的id data 就是数据值了

当前台添加完这条数据的时候 在执行回调把 相关数据 插进这个表里 负责搜索就好了 这个表该加索引就加索引
应该够用了

最好把数据存储到mongo 如果存储关系数据库那就是个大坑,另外一定要存储一份汇总数据,然后在单独把表单数据存储一份,比如我新建了10个表单那么就存储10个集合

支持mongodb存储,像商品属性这些 各种颜色 各种尺寸的 用mongodb存储相当愉快
另,不是所有查询逻辑都写在SQL端才行,有一些逻辑提取出来写在代码层你会发现性能提升不少,可以少了不少join操作。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏