动态表单生成器的数据库模式

Database schema for a dynamic formbuilder

我知道类似的问题已经有答案了,但我觉得答案不够有力,所以我会结合我自己的具体问题来问。

我对这个解决方案的问题是大量使用:
假设我有 100 万用户,
每个用户将有 3 个表单
每个表单将有 10 个字段
每个表单每天将有 5 个提交。

因此 FormSubmissionHeader 每天将增长 100 万 X3X5 = 1500 万行。

FormSubmissionFieldsData 将增长 15X10(每天提交的数量,字段数量的两倍),这意味着每天 1.5 亿行。

所以基于这个解决方案:

我不知道它是如何工作的。

我看到两个选择:

  1. 使用MONGODB存储提交header和数据(否SQL)

  2. 动态创建每个表单 table 并将数据直接存储在那里 每个字段的相关数据类型。

这是我看到的 similar question..

Wufoo's Database Schema - How would you design it?

不知道你们怎么看,或者你们能推荐点别的吗?

您必须努力工作才能让我相信,在这个时代,每天 1.5 亿行的数据量很大。这实际上取决于您打算如何处理提交的内容。只要正确索引,大多数查询都可以正常工作。

但是如果你真的必须减少行数,你可以将表单提交保存为json格式。我相信 Postresql 开箱即用地支持这一点。您可以同时获得两全其美的结构化和半结构化数据。

所以表单 table 没有改变,但是提交 table 将有一些关于提交的列(用户、表单 ID、日期等)和一个 json将答案作为 json 对象的列,您也可以对其进行查询。