我需要存储从多个表单发送的数据 - 有趣的是,因为这些表单将由我计划授予用户访问权限的表单构建器创建,我不知道将有多少字段表单或用户将提交的字段数。我已经考虑过类似于以下的表结构(表单本身保存为包含的php):
| FormId | FormType | InputID | InputType | LongText | Text | Date |
FormId与存储表单文件位置的另一个表相关(例如下面),输入ID与页面上的输入相关。
| FormId | FormType | PathToForm | DateCompleted |...etc
输入" a" from formId 1可能看起来像:
<input id="a" name="a" type="text" value="example"/>
而输入&#34; a&#34; from formId 2可能看起来像:
<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 |
&#34;输入数量&#34;在每个表单上可能是无限的 - 不同表单模板上的输入可能是不同的&#34;类型&#34;每一次。
我的问题(终于!) - 这是我能做到这一点的最好方法吗?我知道每行存储一个表单的输出并不是完全理想的 - 但是没有数百个表,并且如果我将来需要的话,不会失去有用的数据提取的可能性(通过&#34; FormType&#34;)我不确定任何其他结构方式。以前没有真正遇到这样的事情,抱歉,如果它听起来很傻!
答案 0 :(得分:0)
mysql 5.7中有针对这种情况量身定做的东西。 JSON type。join you are in deep trouble。
您可以做的是将表单转换为关联数组,然后将其保存在JSON字段中。
虽然有一些注意事项,但这个字段虽然可以搜索,但搜索效率不如普通的varchar列。另外,如果您想在LINQKit中使用它。