我曾多次遇到以下困境,很想听听其他人是如何解决这个问题的,或者是否有一种可以解决这种情况的规范方法。
在某些领域,人们自然会考虑非常宽的表。以多年来发展的时间序列调查为例。这样的调查可能有数百甚至数千个变量。通常虽然可能只有几千或几万行。将这样的结果集视为一个表是绝对自然的,其中每个变量对应于表中的一列,但是,至少在 SQL Server 中,一个被限制为 1024(非稀疏)列。
明显的解决方法是
- 将每条记录分布在多个表上
- 将数据填充到单个表中,其中包含 、
ResponseId
、VariableName
、ResponseValue
第 2 号。我认为由于多种原因(难以查询、次优存储等)非常糟糕,所以第一选择是我看到的唯一可行的选择。或许可以通过将可能一起查询的列分组到同一个表中来改进这种选择——但在实际使用数据库之前,人们无法真正知道这一点。
所以,我的基本问题是:有没有更好的方法来处理这种情况?