Хранение пользовательских данных в существующей БД SQLite
Я создаю интерактивный учебник со множеством уроков. Список уроков планирую представить через ListView.
Каждый урок содержит 5-10 упражнений, которые пользователь будет выполнять после клика на item ListView с названием урока.
Информацию со списком уроков и содержимым упражнений планирую брать из существующей БД SQLite, которая будет содержать таблицу с полями lesson и exercise.
Пользователь, выполняя упражнения, получает оценку за урок. Эта оценка должна быть отражена в каждом item ListView вместе с названием урока.
Вопрос: как правильно сохранять пользовательские оценки? Нужно ли их хранить в существующей базе данных? Я опасаюсь, что при обновлении файла базы данных пользователь потеряет все свои данные.

Ответы (2 шт):
полностью поддерживаю @Романыч:
забудьте про ListView + переходите Рум.
но на мой взгляд, лучше сделать 2 отдельные БД.
1 с уроками и занятиями (я так понимаю, вы хотите сделать эту БД изменяемой от Релиза).
а 2ая БД с оценками (уже зависит от пользователя).
БД напрямую несвязаны друг с другом. связывать уроки с оценками может Репозиторий.
превращать их в один полноценный объект из данных из БД Уроков и Оценок.
мне кажется, это решит проблемы миграции (точнее, их даже не придется писать). ведь изменений в структуре таблицы БД с оценками не будет. а БД с уркоами можно будет вертеть как хочется (главное условный ID-урока сохранять первоначальным).
Я делаю примерно так. Хранить можно все в одной БД. Так будет удобнее. Например у вас есть таблицы с уроками, с содержанием этих уроков. Эти таблицы заполнены вам изначально. Сразу можно в БД добавить таблицу с привязками оценок к урокам. Таблица соответственно пустая. Кладете эту таблицу в asset. При запуске приложения происходит копирование БД из папки asset в определенную папку приложения (database). Ну и все. Далее работаете с таблицей оценок. При обновлении приложения, вы копируете таблицу оценок в память (условно в список ArrayList). Далее удаляете текущую БД, записываете новую из asset и в конце копируете из списка данные в таблицу уже новой БД. Работать с одной БД намного удобнее. Всегда можно сделать резервную копию данных оценок, что бы не терять в случае чего.
И да, вместо ListView используйте RecyclerView - это очень удобно, и лист просто устарел.