在SQLite中有效地存储和查询整数数组



我有一个混合Cordova Android移动应用程序,该应用在SQLite数据库中记录用户活动。每个行条目都有有助于表征活动性质的列。这样的一列记录了一周的不同日子的三个子活性,我表示这三个子活性为整数阵列[0..6,7..13,14..20]。此外,我希望能够区分恰好是公共假期的"正常"日子和日子的活动。我这样做是通过在数组中记录一个负条目。在这里更清楚的是一个例子

[0,-2,9,13,-18,20]

代表

  • 周日的子活动A
  • 周二公共假期的子活动A
  • SUB活动B周三&星期六
  • 周五公共假期的子活动C
  • 周六的次级活动

这是相对简单的 - 我可以将数组存储为JSON。但是,我也希望能够尽可能有效地查询此集合的会员资格。我能想到的唯一方法是使用LIKE条件。例如

SELECT * FROM TABLE WHERE activity_column LIKE '%-2%'

我希望在公共假期周二记录活动的地方返回所有行。

我怀疑这可能会起作用。但是,在Android Datbase方面,我是新手。我知道sqlite是默认解决方案。是否有一个选项 - 无论是在SQLite还是在替代方案中 - 可以渲染此类存储&搜索更有效,更令人费解?

这一切都取决于您设计SQL基础的方式。

一种方法可能是拥有3个表,每项活动一张。每个关键可能是当天的时间戳,然后您可以拥有INT数据的JSON数组的列。

您还可以添加一个额外的生活质量专栏,例如" Day",您可以在这里保留一周中的int代表。

这样,如果您想要在星期二注册的活动1的数据,则只需查询

SELECT * FROM Activity1 WHERE day = 1

最新更新