0

我正在编写这个应用程序,它允许用户定义自定义测验,然后允许另一个用户回答问题。测验的每个问题都有相应的数据类型。所有问题的所有回答都垂直存储在我的 [Response] 表中。我目前使用 2 个字段来存储响应。

//Response schema
ResponseID int
QuizPersonID int
QuestionID int
ChoiceID int //maps to Choice table, used for drop down lists
ChoiceValue varbinary(MAX) //used to store a user entered value

我正在使用 .net 3.5 C# SQL Server 2008。

我在想我想在同一个字段中存储不同的数据类型,然后在我的 SQL 报告过程中我会转换为正确的数据类型。我认为这是理想的,因为我只需要检查一个字段。我也认为这可能比它的价值更麻烦。

我认为我的其他选择是;将数据作为字符串存储在数据库中(恶心),或者为我可能使用的每种数据类型设置一个列。

所以我想知道的是,我将如何在 C# 中格式化我的数据类型,以便它们可以在 SQL 中正确转换?在 SQL 中转换对性能有何影响?我应该为每种数据类型制作一整列吗?

4

1 回答 1

1

仍然不是一个完美的解决方案,但您可能想看看sql_variant 数据类型,它允许您将大多数SQL Server 类型存储在同一列中。但请注意,不支持“长”数据。

我过去在类似情况下也使用过的另一种方法是为每种类型的响应与“父”响应表一起创建一个单独的表。这也允许您正确关联到您的选择表。例如,您将拥有以下表格:

  • 回复
  • 字符串响应
  • 日期时间响应
  • 位响应
  • 选择响应
  • XyzResponse 等

所有类型化的响应表将与 Response 处于可选的 1-1 关系,所有其他相关表将仅与父 Response 表相关。

于 2010-05-25T20:12:14.990 回答