【问题标题】:How to design database tables for dynamic forms (User defined fields)如何为动态表单设计数据库表(用户定义字段)
【发布时间】:2014-10-11 07:06:03
【问题描述】:
Text、Number、Decimal 等单个值并不难,但单选选项呢?复选框?
单值UDF
FORM
- Id
- AttributeName
- DataTypeId
FORMVALUE
- Id
- FormId
- UserId (user that entered the value)
- Value
DATATYPE
- Id
- DataTypeName
【问题讨论】:
标签:
sql-server
database
database-design
【解决方案1】:
首先,我将使用“属性”仅作为输入并将其移动到规范化表中。
让我们先做研究:
-
组合框 - 状态 (0/1)
创建表格复选框(
cb_id,
cb_label,
cb_state 位 --0 否 1 是)
-
RadioButton - 选中状态的组。
嗯……
CREATE TABLE RadioGroup (
rg_id int primary increment etc,
rg_name,
rg_selectedindex)
Create table RadioVariants
(rv_id,
rv_rd_id,
rv_label -- text to show on site)
)
在将查询解析到您的应用程序时,向每个单选按钮添加 ra_id。
在保存结果时,你会得到 rv_id 代表选定的值。
现在让我们做一个表格
CREATE TABLE Form (fa_id, fa_name)
CREATE TABLE FormControlls (fac_id, fa_id, fa_rg_id, fa_cb_id)
所以最后你有一个表单,其中包含复选框和无线电组项目。
在应用程序中,您必须将 rv_id 设置为 radiogroup 变体并将其传递给 UserFormData。
CREATE TABLE UserFormData (ufd_id, ufd_fa_id, fa_rg_id, fa_rg_value --ID of selected variant,
fa_cb_id, fa_cb_value --state of checkbox)
我开会迟到了,但我相信你“明白”了这个理论。