【发布时间】:2017-07-05 19:00:46
【问题描述】:
如何使用多选字段存储动态表单中的数据。
我已经阅读了各种帖子,所有示例都只有列表键、值输入。但是如果表单有多选输入。什么是存储数据的最佳方式。 我不是在寻找 NoSQL 解决方案。
目前的设计
forms
-----
id (PK)
name
(other fields)
form_elements
-------------
id (PK)
form_id (FK to forms.id)
element_type_id (FK to element_types.id)
name
list_group (nullable, it will be related only for multiselect inputs)
(other fields)
element_types
-------------
id (PK)
name
list_values
-------------------
id (PK)
value
group
(other fields??)
表格样本数据
| form_id | form_name |
|:-------:|:---------------:|
| 1 | Enquiry Form |
| 2 | Test Drive Form |
| 3 | Feedback Form |
Form_elements 示例
| id | form_id | element_type_id | name | list_group |
|:--:|:-------:|:---------------:|:---------:|:-------:|
| 1 | 1 | 1 | firstName | |
| 2 | 1 | 1 | LastName | |
| 3 | 1 | 2 | color | color|
元素类型
| id | name |
|:--: |:--------: |
| 1 | text |
| 2 | checkbox |
| 3 | radio |
list_values 示例数据
| id | value | group |
|:--: |:-----: |------- |
| 1 | red | color |
| 2 | blue | color |
| 3 | green | color |
| 4 | Dell | brand |
| 5 | HP | brand |
示例 json 发布
{
"firstName": "john",
"lastName": "Doe",
"color": "red"
}
form_submit 表将包含以下行
| form_id | Column_id | value |
|:-------: |:---------: |:-----: |
| 1 | 1 | John |
| 1 | 2 | Doe |
| 1 | 3 | Red |
| 1 | 1 | James |
| 1 | 2 | Smith |
| 1 | 3 | Blue |
如果动态表单有多选选项 发布的示例 json 将是
{
"firstName": "John",
"lastName": "Doe",
"color": [
"red",
"green",
"blue"
]
}
您如何存储这些数据。
我们是否需要将其存储在同一个 form_submit 表中。或存储在不同的表中
【问题讨论】:
-
你存储它的目的是什么?是上传到另一个系统还是报告它?如果是报道,它们是什么类型的报道?你需要一份统计所有选择绿色的人的报告吗?或者它只是人们挑选的硬拷贝转储?还是你有逻辑来检查答案并分配分数?
-
您没有描述任何约束来帮助我们决定是否可以按原样填充 JSON,或者是否应该构建一个定义多对多关系的桥接表。 “正确”的规范化方法是建立一个桥表,但我们不知道你的约束。
-
@Nick.McDermaid 我们需要将原始数据下载/连接到另一个系统。此外,我们希望获得报告,例如选择的颜色计数等。我们使用的是 ms sql server 2014 。 /弹簧MVC。我不想存储在 JSON 中。我更喜欢将复杂查询存储在表中。所以我正在寻找一个最好的数据库设计来支持这个
-
那么
form_submit代表什么?它看起来不支持任何人在表单中输入多个值。即,如果一个人输入一组值而另一个人输入另一组值,则该表似乎不支持这一点。您需要另一个 rcolumn,例如submit_id,它代表每个人的提交。考虑一下,然后我或其他人可以提出答案 -
是的 form_submit 是存储提交的数据,目前不支持多选输入。如果我们只有一个键值列表,它将起作用。所以我需要帮助设计一个数据库表来支持多个选定的值(选定颜色的数组)
标签: json database forms database-design dynamicform