有没有办法在SQL Server的列中存储像数据一样的数组?

时间:2014-07-23 01:26:25

标签: sql-server

我有一个包含测试问题的表。表格的每一行都包含特定用户测试问题的详细信息。

向用户显示3-5个可能的答案,我想存储已在行中检查的答案的详细信息。我并不是真的想为每个答案添加新行,因为这会产生大量的行。

有没有办法可以在SQL Server的列中存储类似答案数组的内容?目前我将数据存储为JSON字符串,但我记得Oracle有一些存储数组数据的方法,我想知道SQL Server是否也有相同的数据。

1 个答案:

答案 0 :(得分:2)

一般来说,变性不是一个好主意。 很少一个好主意。但是,出于性能原因,有时需要它。所以,如果不是太慢,甚至不要考虑它。

如果您使用TestQuestionID(或任何您将单个问题的答案称为答案)作为聚集索引在您的情况下制作二级答案表,那么与它相比,它不会产生很大的性能差异。一个非规范化的表。

如果我对你的描述表进行非规范化,我可能只会在表中创建5列,你也可以使用xml字段,但你所存储的只有5个答案,所以在这个简单的情况下我不会使用xml。 / p>

既然你问这个问题,你就不是一个经验丰富的专业人士(我们都是初学者),你应该在你反规范之前咨询当地的sql专家。

ADDED CAVEAT,

既然你接受了这个答案,你真的需要明白,非正规化几乎总是是错误的事情。这就是为什么包括我在内的每个人都试图告诉你的原因。如果你没有与当地的DBA(不幸的是太常见)采取集体建议,并且不进行反规范化,那么不要在没有与DBA交谈的情况下这样做。在职业生涯中,我只能想到一次,我认为非规范化是正确的解决方案。我曾经多次因不恰当的去乙酰化而被糟糕的设计(强迫我)所困扰。