我有一个混合的 Cordova Android 移动应用程序,它在 SQLite 数据库中记录用户 Activity 。每个行条目都有帮助描述 Activity 性质的列。其中一个列记录了一周中不同日期的三个子 Activity ,我将这三个子 Activity 表示为一个整数数组 [0..6,7..13,14..20]
.此外,我希望能够区分“正常”日子和恰好是公共(public)假期的 Activity 。我通过在数组中记录一个负条目来做到这一点。为了使这一点更清楚,这里有一个例子
[0,-2,9,13,-18,20]
代表
- 周日的子 Activity A
- 周二公共(public)假期的子 Activity A
- 子 Activity B周三周六
- 公共(public)假期周五的子 Activity C
- 星期六的子 Activity C
这相对简单 - 我可以将数组存储为 JSON。但是,我还希望能够尽可能高效地查询该集合的成员资格。我能想到的唯一方法是使用 LIKE
条件。例如
SELECT * FROM TABLE WHERE activity_column LIKE '%-2%'
我希望返回所有在星期二公共(public)假期记录 Activity 的行。
我怀疑这可能会奏效。但是,对于 Android 数据库,我是一个新手。我知道 SQLite 是默认的解决方案。是否有一个选项 - 无论是在 SQLite 中还是在替代方案中 - 可以使这种存储和搜索更高效且更简单?
最佳答案
这一切都取决于您如何设计 sql 库。
一种方法可能是使用 3 个表,每个表对应一个 Activity 。每个中的键可以是当天的时间戳,然后您可以为 int 数据的 json 数组设置列。
您还可以添加一个额外的生活质量列,例如“day”,您可以在其中保留星期几的 int 表示形式。
这样,如果您想要在星期二注册的 Activity1 的数据,您只需查询
SELECT * FROM Activity1 WHERE day = 1
关于android - 在 SQLite 中高效地存储和查询整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48682079/