SQL Server表设计具有非固定列

时间:2017-08-08 04:05:03

标签: sql-server tsql

我需要你帮助设计一张桌子。

我有一些组表,我们需要从包含列名和数据的xml文件中加载该组表中的数据。

列名实际上是某些主列的索引,如activity_col1activity_col2等等,并且每次都不固定,有时同一个表文件包含1000列,有些列可能有10列值时间也有最大限制也定义所以没有文件将包含多个 每组2000列。

所以我需要设计一个最好的解决方案表,我还需要对列值进行聚合。这些文件包含最低级别的数据,我需要将这些数据存储在min表中,然后需要在一小时,一天,一周和一个月内汇总这些最小数据。

如果我在所有表中创建最大列,但每次都不会在所有列中出现数据,因此这种设计似乎不好,因为大多数值都是null。

如果我在列名列中插入列名作为行,而在值列中插入每列值的值,则聚合对我来说将是一项繁琐的任务 它会影响表现。

请建议。

1 个答案:

答案 0 :(得分:0)

一个选项是EAV,但构建,查询和插入更加复杂,可读性非常低。

您需要无架构设计,允许无限数量的列, 你最好的选择可能是使用NoSQL解决方案。尽管EAV相对于关系数据库的弱点也适用于NoSQL替代方案。

另请看这里:

Benefits of NoSQL

建议(优先):

  1. 选择EAV,如果您使用的是关系数据库,那就是 你转动整个桌子或一部分(在另一个 表)在它的一边。如果您已经拥有,这是一个不错的选择 内部的关系数据库,你无法轻易离开。
  2. 选择NoSQL,如果对你来说无关紧要DBMS这是非常的 灵活而快速,而不是所有的报告编写者 支持这种存储方式。有很多示例数据库 NoSQL的实现。似乎最受欢迎的那个 现在,是MongoDB
  3. 以及我建议您不要使用的最后一个选项:

    1. 选择包含XML列的标准表,如果您不需要 查询它们,您只想以普通方式存储和检索 使用一些额外用法的文字。
    2. 我希望对你有所帮助:)。