我的数据库保存有值的模板表单和实际表单。用户将能够创建具有不同类型字段的自定义模板表单。我将把值保存在一个单独的表中。
形式表:
Id | Name | TemplateId
FormFields表:
Id | FormId | Name | ValueType (nvchar)
值表
FieldId | Value
当用户设计一个表单,它被保存到表单表TemplateId NULL
。此外,FormFields表存储将用于此表单的字段。稍后,当用户使用该模板创建real表单时,该表单的实际值(来自FormFields)将存储在values表中。现在,Values表中的值列似乎是sql_variant
类型。如果我不使用sql_variant
,我怎么解决这个问题?
Ps:为不同的值创建不同的表怎么样?TableIntValues, TableBoolValues等?
http://www.jotform.com/可以是一个很好的例子,为我的项目。
我建议为不同的数据类型使用单独的列,如下所示:
FieldId | StringValue | IntegerValue | DateTimeValue
这样,您就可以在数据上合理地运行查询,并保持其类型安全。显然,您需要逻辑来确保正确填充数据,并需要约束来确保只填充一个列,而不是所有列都为NULL。