Tsql SQL表结构

Tsql SQL表结构,tsql,data-structures,database-design,Tsql,Data Structures,Database Design,我开始了一个新的项目,将处理调查和审查。此时,我正试图找出存储和处理此类信息的最佳sql表结构 基本上,调查将包含评级、文本评论和其他可选信息,供客户共享。现在我考虑将每个信息存储在一个单独的列中,或者合并所有这些数据并将其作为XML存储在一个列中 我不确定什么是更好的解决方案,但我想到了以下问题: -在使用单个XML列的情况下,收集的信息可能会增加吗 -从XML列中提取和处理信息时,单个XML列是否会对性能产生严重影响?如果您有理由查询单个信息,或单独更新它,则不将该数据存储在XML中,而是作

我开始了一个新的项目,将处理调查和审查。此时,我正试图找出存储和处理此类信息的最佳sql表结构

基本上,调查将包含评级、文本评论和其他可选信息,供客户共享。现在我考虑将每个信息存储在一个单独的列中,或者合并所有这些数据并将其作为XML存储在一个列中

我不确定什么是更好的解决方案,但我想到了以下问题: -在使用单个XML列的情况下,收集的信息可能会增加吗
-从XML列中提取和处理信息时,单个XML列是否会对性能产生严重影响?如果您有理由查询单个信息,或单独更新它,则不将该数据存储在XML中,而是作为单独的列存储


在我看来,在数据库中存储XML(或任何其他复合类型的数据)是一个好主意是很少见的。尽管总是有例外。

如果您有理由查询单个信息,或者单独更新它,那么不要将该数据存储在XML中,而是作为单独的列存储


在我看来,在数据库中存储XML(或任何其他复合类型的数据)是一个好主意是很少见的。尽管总是有例外。

要借助Flimzy的答案,只需将数据存储在数据库中,而不是特定的格式(即XML)。现在可能需要XML,但明天可能需要CSV或固定宽度的DAT文件。此外,如果只存储数据,则可以使用数据库的“能力”搜索特定的信息列,然后根据需要以XML形式返回。

要借助Flimzy的答案,只需将数据存储在数据库中,而不是特定的格式(即XML)。现在可能需要XML,但明天可能需要CSV或固定宽度的DAT文件。另外,如果您只存储数据,那么您可以使用数据库的“能力”来搜索特定的信息列,然后根据需要将其作为XML返回。

如果您不想与需要关系数据的关系数据库发生冲突,您可能需要合理的规范化数据。我看不出XML会给您带来什么好处。如果在调查中输入了多个值,则可能需要另一个表来显示调查条目,其中包含调查的外键

如果这将是一个相对广泛的应用程序,您可能会考虑一个用于调查定义的表、一个用于调查问题的表、一个用于调查响应的表和一个用于调查问题响应的表。如果调查数据可以是多种类型,则可能需要为可能提出的每种问题提供一个表,但在某些情况下,可能需要列

编辑-我想每个问题的答案至少有一行。如果答案很复杂(不只是对应一个简单数据类型的一个实例),那么它实际上可能是多行的(尽管如果列的数量很小且固定,将其反规范化为多个列可能没有问题)。如果一个问题的答案需要存储在多行中,那么您几乎肯定会得到一个表示答案的表,每个答案有一行,再加上另一个表示答案片段的表,每个片段有一行

如果您考虑XML的原因是答案将是非常不同的类型(例如,一个问题的评语、标题、标题、正文和评论部分;另一个问题的超链接列表等),那么答案表实际上可能必须是多个表,因此,您可以为每种类型的问题建模数据。不过,这将是一个相当复杂的案例


希望单个表中每个响应一行就足够了。

如果您不想与需要关系数据的关系数据库发生冲突,您可能需要合理的规范化数据。我看不出XML会给您带来什么好处。如果在调查中输入了多个值,则可能需要另一个表来显示调查条目,其中包含调查的外键

如果这将是一个相对广泛的应用程序,您可能会考虑一个用于调查定义的表、一个用于调查问题的表、一个用于调查响应的表和一个用于调查问题响应的表。如果调查数据可以是多种类型,则可能需要为可能提出的每种问题提供一个表,但在某些情况下,可能需要列

编辑-我想每个问题的答案至少有一行。如果答案很复杂(不只是对应一个简单数据类型的一个实例),那么它实际上可能是多行的(尽管如果列的数量很小且固定,将其反规范化为多个列可能没有问题)。如果一个问题的答案需要存储在多行中,那么您几乎肯定会得到一个表示答案的表,每个答案有一行,再加上另一个表示答案片段的表,每个片段有一行

如果您考虑XML的原因是答案将是非常不同的类型(例如,一个问题的评语、标题、标题、正文和评论部分;另一个问题的超链接列表等),那么答案表实际上可能必须是多个表,因此,您可以为每种类型的问题建模数据。不过,这将是一个相当复杂的案例


希望在一个表中每个响应一行就足够了。

为了保持简单,您有两个选择:动态调查或静态调查

动态调查如下所示:

不仅报告会更复杂,UI也会更复杂。曲数