我正在寻找为用户创建一个表格并跟踪他们的目标。目标本身将在 100 的数量级,如果不是 1000 的话,并且将维护在他们自己的表中,但它不会知道谁完成了它们 - 它只会定义哪些目标可用。
Objective:
ID | Name | Notes |
----+---------+---------+
| | |
现在,在 Java 环境中,用户将拥有一个用于目标的 java.util.BitSet。所以我可以去
/* in class User */
boolean hasCompletedObjective(int objectiveNum) {
if(objectiveNum < 0 || objectivenum > objectives.length())
throw new IllegalArgumentException("Objective " + objectiveNum + " is invalid. Use a constant from class Objective.");
return objectives.get(objectivenum);
}
我在内部知道,BitSet 使用 long[] 来进行存储。在我的 Derby 数据库中表示这一点的最佳方式是什么?如果可能的话,我更愿意将它保存在 AppUser 表的列中,因为它们确实是用户的元素。
Derby 不支持数组(据我所知),虽然我不确定列限制,但拥有 1000 列似乎有些问题,特别是因为我知道我不会使用类似的东西查询数据库
SELECT *
FROM AppUser
WHERE AppUser.ObjectiveXYZ
我有哪些选择,既可以存储它,也可以将其编组到 BitSet 中?java.util.BitSet 是否有可行的替代方案?一般方法有缺陷吗?我对想法持开放态度!
谢谢!
*编辑:如果可能的话,我希望能够仅通过数据修改而不是表修改来添加更多目标。但同样,我对想法持开放态度!