避免使用sql_variant而是使用什么?

时间:2013-04-10 12:00:59

标签: sql database sql-variant

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

表格表格:

Id | Name | TemplateId

FormFields表:

Id | FormId | Name | ValueType (nvchar)

价值表

FieldId | Value

当用户设计表单时,它会保存到具有TemplateId NULL的表单表中。 FormFields表还存储将用于此表单的字段。 稍后,当用户使用该模板创建真实表单时,此表单的实际值(从FormFields中提取)将存储在Values表中。 现在,Values表中的value列似乎是sql_variant类型。如果我不使用sql_variant,我该如何解决这个问题?

Ps:为每种值创建不同的表怎么样? TableIntValues,TableBoolValues等?

http://www.jotform.com/可以成为我项目的一个很好的样本。

1 个答案:

答案 0 :(得分:0)

我建议对这些单独的数据类型使用单独的列:

FieldId | StringValue | IntegerValue  |  DateTimeValue

通过这种方式,您可以明智地对数据进行查询,并确保其类型安全。您显然需要逻辑来确保正确填充数据,并且需要一个约束来确保只填充一列而不是全部都是NULL。