База данных SQLite для приложения Android с потенциальными несколькими пользователями - PullRequest
13 голосов
/ 11 августа 2011

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

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

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

Ответы [ 2 ]

3 голосов
/ 11 августа 2011

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

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

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

1 голос
/ 11 августа 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...