在 mysql 中输入未知数量的字段 - 最好的结构?
input unknown number of fields into mysql - best structure for this?
我需要存储从多个表单发送的数据 - 有趣的是,因为这些表单将由我计划授予用户访问权限的表单生成器创建,我不知道有多少字段将在表单中,或者用户将提交多少字段。我想过一个类似于下面的table结构(表格本身保存为php用于include):
| FormId | FormType | InputID | InputType | LongText | Text | Date |
FormId 与另一个 table 表单文件的存储位置相关(例如下面),Input 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>
我可以这样写成 table:
| FormId | FormType | InputID | InputType | LongText | Text | Date |
--------------------------------------------------------------------------
| 1 | 1 | a | text | NULL | example | NULL |
| 2 | 2 | a | textarea | example | NULL | NULL |
每个表单上 "inputs" 的数量可能是无限的 - 不同表单模板上的输入每次可能 "type" 不同。
我的问题(终于!)- 这是我能做到的最好方式吗?我知道每行存储一个表单的输出并不完全理想——但是没有数百个 tables 并且,如果我将来需要的话,也不会失去有用地提取数据的可能性(通过 "FormType") 我不确定是否还有其他结构方式。以前真的没有遇到过这样的事情,如果听起来很傻,请见谅!
mysql5.7 中有一些东西是为这种情况量身定做的。 JSON type。
您可以将表单转换为关联数组,然后将其保存在 JSON 字段中。
但有一些注意事项,尽管此字段可搜索,但搜索效率不如普通 varchar 列。此外,如果您想在 join you are in deep trouble.
中使用它
我需要存储从多个表单发送的数据 - 有趣的是,因为这些表单将由我计划授予用户访问权限的表单生成器创建,我不知道有多少字段将在表单中,或者用户将提交多少字段。我想过一个类似于下面的table结构(表格本身保存为php用于include):
| FormId | FormType | InputID | InputType | LongText | Text | Date |
FormId 与另一个 table 表单文件的存储位置相关(例如下面),Input 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>
我可以这样写成 table:
| FormId | FormType | InputID | InputType | LongText | Text | Date |
--------------------------------------------------------------------------
| 1 | 1 | a | text | NULL | example | NULL |
| 2 | 2 | a | textarea | example | NULL | NULL |
每个表单上 "inputs" 的数量可能是无限的 - 不同表单模板上的输入每次可能 "type" 不同。
我的问题(终于!)- 这是我能做到的最好方式吗?我知道每行存储一个表单的输出并不完全理想——但是没有数百个 tables 并且,如果我将来需要的话,也不会失去有用地提取数据的可能性(通过 "FormType") 我不确定是否还有其他结构方式。以前真的没有遇到过这样的事情,如果听起来很傻,请见谅!
mysql5.7 中有一些东西是为这种情况量身定做的。 JSON type。
您可以将表单转换为关联数组,然后将其保存在 JSON 字段中。
但有一些注意事项,尽管此字段可搜索,但搜索效率不如普通 varchar 列。此外,如果您想在 join you are in deep trouble.
中使用它