2

我的要求是:

  • 需要能够动态添加具有不同字段/字段类型的表单
  • 表单可以包含一个下拉列表,其中填充了另一个表单的值

提交的表格 例如:员工表格:

  1. 名字(文本框)
  2. 姓氏(文本框)
  3. 部门(下拉)-> 应该绑定到部门表单

部门表格:

  1. 部门名称(下拉)

其他信息:

  • 我的数据库是 SQL server
  • 我正在寻找性能
  • 每个表可以有超过一百万条记录
  • 我们的系统中有 1000 多个用户
  • 我们需要获取用户提交记录的不同报告
  • 报告需要在所有列上具有过滤功能

选项:

  1. 每个表单创建一个表
  2. 为表单结构和字段结构添加 2 个表,然后为提交的表单值和提交的字段值添加 2 个表

还有其他选择或想法吗?

4

1 回答 1

5

好吧,我可能会创建一个这样的数据库结构:

-- 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)
)

兴趣点:

  1. 我已将 varchar(100) 用于所有文本数据,就像此示例中的任意数字一样。您应该为您的应用程序选择适当的内容长度。

  2. 我还使用 varchar 来存储组合框和单选按钮等输入的值,因为它很简单。如果您打算使用非文本值(例如 .Net 对象或图像,您应该将此数据类型更改为适合您需要的任何内容 - 想到 xml 和 varbinary。

于 2016-01-27T07:07:23.377 回答