【发布时间】:2017-05-24 23:43:59
【问题描述】:
我需要存储从多个表单发送的数据 - 有趣的是,这些表单将由我计划让用户访问的表单构建器创建,我不知道会有多少字段表单或用户将提交的字段数。我想过类似下面的表结构(表单本身保存为php用于include):
| FormId | FormType | InputID | InputType | LongText | Text | Date |
FormId 与表单文件等的另一个表存储位置相关(例如下面),输入 ID 与页面上的输入相关。
| FormId | FormType | PathToForm | DateCompleted |...etc
从 formId 1 输入“a”可能如下所示:
<input id="a" name="a" type="text" value="example"/>
而来自 formId 2 的输入“a”可能如下所示:
<textarea name="a" id="a"></textarea>
我可以这样写到表格中:
| FormId | FormType | InputID | InputType | LongText | Text | Date |
--------------------------------------------------------------------------
| 1 | 1 | a | text | NULL | example | NULL |
| 2 | 2 | a | textarea | example | NULL | NULL |
每个表单上的“输入”数量可能是无限的 - 不同表单模板上的输入每次可能具有不同的“类型”。
我的问题(终于!) - 这是我能做到的最好方法吗?我知道每行存储表单的输出并不完全理想 - 但是没有数百个表,并且不会失去在将来需要时有用地提取数据的可能性(通过“FormType”)我'我不确定任何其他的结构方式。以前真的没有遇到过这样的事情,如果听起来很傻,对不起!
【问题讨论】:
-
我们使用的这样一个产品是重力形式。你可能想看看他们的数据结构:)
-
查看 EAV 标签 -- 大量讨论。
标签: php mysql database-design entity-attribute-value