避免sql_variant,但使用什么



我的数据库保存有值的模板表单和实际表单。用户将能够创建具有不同类型字段的自定义模板表单。我将把值保存在一个单独的表中。

形式表:

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。

最新更新