我的要求是:
- 需要能够动态添加具有不同字段/字段的表单 类型
- 表单可以包含一个下拉列表,其中填充了 他人的值(value)观
提交表格 例如: 员工表格:
- 名字(文本框)
- 姓氏(文本框)
- 部门(下拉)-> 应该绑定(bind)到部门表格
部门表格:
- 部门名称(下拉)
其他信息:
- 我的数据库是 SQL Server
- 我在寻找表现
- 每个表可以有超过一百万条记录
- 我们的系统中有 1000 多个用户
- 我们需要根据用户提交的记录得到不同的报告
- 报告需要对所有列都具有过滤功能
选项:
- 为每个表单创建一个表
- 为表单结构和字段结构添加 2 个表 然后还有 2 个表用于 submitted-form-value 和 submitted-field-value
还有其他选择或想法吗?
最佳答案
好吧,我可能会创建一个这样的数据库结构:
-- This table will hold the forms
CREATE TABLE tblForm
(
Form_Id int IDENTITY(1,1) PRIMARY KEY
, Form_Name varchar(100)
-- Any other form related data such as create date, owner etc`
)
-- This table will hold the input types (i.e text box, combo box, radio buttons etc`)
CREATE TABLE tblInputType
(
InputType_Id int IDENTITY(1,1) PRIMARY KEY
, InputType_Name varchar(100)
)
-- This table will hold the inputs used in the form
CREATE TABLE tblFormInput
(
FormInput_Id int IDENTITY(1,1) PRIMARY KEY
, FormInput_Form int FOREIGN KEY REFERENCES tblForm(Form_Id)
, FormInput_InputType int FOREIGN KEY REFERENCES tblInputType(InputType_Id)
, FormInput_Name varchar(100)
, FormInput_DisplayOrder numeric(18,18)
, FormInput_DefaultText varchar(100)
)
-- This table will hold the texts and values used for combo boxes, radio buttons, check boxes etc`
CREATE TABLE tblFormInputExtraData
(
FormInputExtraData_FormInput int FOREIGN KEY REFERENCES tblFormInput(FormInput_Id)
, FormInputExtraData_Text varchar(100)
, FormInputExtraData_Value varchar(100)
)
兴趣点:
我将 varchar(100) 用于所有文本数据,就像一个任意 这个例子的编号。你应该选择合适的内容 适合您的应用程序的长度。
我还使用 varchar 来存储输入值,例如组合 框和单选按钮,因为这很容易。如果您打算使用 非文本值(例如 .Net 对象或图像,您应该 将此数据类型更改为适合您需要的任何类型 - xml 和 我想到了 varbinary。
关于sql-server - 如何为关系动态表单设计数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34987407/