SQL中具有多个“活动”或“非活动”状态的时间序列

时间:2014-08-22 14:12:58

标签: sql sqlite relational-database

我有一个数据库,可以在很长的时间内为每分钟存储一些经验数据。时间可以是表格的主键,即每分钟最多出现一次(甚至恰好一次)。

另外,我可以说每个分钟都有几个州的状态'可能是活跃的。有时没有状态处于活动状态,有时一个状态处于活动状态,有时多个状态处于活动状态。

可能的状态数量非常大(大约40个州)。我如何用一个表中的状态来建模经验数据的时间序列?我希望能够过滤分钟,例如多个州处于活跃状态,或者一个或多个有趣的国家/地区。各州都很活跃。

数据库非常错综复杂。有更多的数据,我有很多观点。为了简单起见,我想摆脱一些“加入 - 这个,分组”和“#39;东西。当然,我可以加入包含状态的表,但是在连接表中,时间将变为非唯一(因为有时多个状态处于活动状态)。

显而易见的简单想法是为每个州提供另一个可以保存这两个值的列。或者'不活跃' (或者只是“活跃的'和' NULL'”)。但由于我有大约40个州,这意味着大约40多个列......

在SQL数据库中对此进行建模的最佳方法是什么。我希望顺便使用SQLite3 ....

1 个答案:

答案 0 :(得分:1)

列值为NULL,0或1将仅占用数据库中的一个字节。

如果规范化数据库以使每个活动状态都有自己的行,那么每个这样的行也必须存储它所属的分钟。 除非活动状态非常少,否则这可能需要比40列更多的空间。

如果您有40列,则很难统计一分钟内有多少个状态。

相关问题