Я хочу создать таблицу для пользователей и отслеживать их цели. Сами цели будут порядка 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?
Есть ли недостаток в общем подходе? Я открыт для идей!
Спасибо!
* РЕДАКТИРОВАТЬ: Если это вообще возможно, мне бы хотелось добавить больше целей только с модификацией данных, а не с таблицей. Но опять же, я открыт для идей!