我有一个混合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