好吧,我可能会创建一个这样的数据库结构:
-- 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。