Подтвердить что ты не робот

База данных SQLite для Android-приложения с потенциальными несколькими пользователями

У меня есть приложение с базой данных SQLite для хранения информации для учетной записи пользователя. Я разработал базу данных, исходя из предположения, что приложение будет иметь только одного пользователя. Таким образом, идентификатор пользователя не сохраняется в базе данных (но он хранится в центральной базе данных на сервере). Тем не менее, можно выйти из приложения и позволить другому пользователю войти в систему, но проблема с этим в настоящий момент, их данные загружаются, а затем добавляются к другим пользовательским данным. Это не то, что я хочу, но я не уверен, как лучше всего изменить дизайн базы данных, чтобы решить эту проблему. Я подумал:

  • Одна база данных для каждого пользователя. Может привести к ненужному хранению данных, если пользователь только один раз войдет в систему на своем мобильном телефоне и больше никогда. Также я думаю, что это может быть трудно справиться.
  • Добавьте столбец идентификатора пользователя ко всем таблицам, поэтому добавление не вызывает проблемы. Все еще имеет ненужную проблему с данными, которая (1) имеет и теряет 1 модульность.
  • Протрите базу данных, когда пользователь выйдет из системы. Если у пользователя много данных на сервере, потребуется долгое время для синхронизации данных при запуске приложения (это будет сделано в другом потоке, но это все равно боль).

Является ли один из этих подходов хорошим? Или есть лучший способ сделать это?

4b9b3361

Ответ 1

Я бы пошел на вариант 1. Сохранение его в виде отдельного файла гарантирует, что не будет каких-либо последствий для производительности при наличии нескольких баз данных.

Вы можете добавить идентификатор пользователя в имя файла базы данных. У вас может быть какая-то система LRU, в которой вы автоматически удаляете самую старую базу данных, если у вас больше 4 (или если вы превышаете определенный объем данных).

Специфика этого выбора зависит от вас, так как вы знаете, сколько хранилища данных вы хотите использовать, и сколько пользователей будет использовать приложение на одном устройстве.

Ответ 2

Это действительно зависит от ваших требований, однако третий вариант кажется не очень практичным. Если вы сделали это, то это будет так же, как удаление и переустановка вашего приложения.

Я, вероятно, был бы более склонен использовать вариант 2, но это зависит от того, что вы хотите сделать в своей базе данных. например если вы хотите получать статистику или запросы для всех пользователей, а не отдельных лиц, и если есть общие данные, которые совместно используются пользователями.

Если вы беспокоитесь о размере хранилища, напишите сервис, который очищает данные, принадлежащие любому пользователю, который не вошел в систему с определенным временным интервалом.