具有潜在多个用户的Android应用程序的SQLite数据库

Pik*_*ing 13 sqlite android

我有一个带有SQLite数据库的应用程序,用于存储用户帐户的信息.我假设应用程序只有一个用户,我设计了数据库.因此,用户的ID不存储在数据库中(但它存储在服务器上的中央数据库中).但是,可以注销应用程序并让其他用户登录,但目前的问题是,他们的数据被下载然后附加到其他用户的数据.这不是我想要发生的事情,但我不确定如何最好地改变数据库设计来解决这个问题.我考虑过:

  1. 每个用户一个数据库.如果用户只是在他们朋友的电话上登录一次并且从不再登录,则可能导致不必要的数据存储.另外我猜这可能很难管理.
  2. 将用户ID列添加到所有表,因此追加不会导致问题.还有(1)具有的不必要的数据问题,并且失去了1的模块性.
  3. 用户注销时擦除数据库.如果用户在服务器上有大量数据,则在应用程序启动时同步数据需要很长时间(这将在另一个线程上完成,但仍然很麻烦).

这些方法之一是好的吗?或者有更好的方法吗?

Ebo*_*ike 4

我会选择选项 1。将其保留为单独的文件将确保拥有多个数据库不会对性能产生任何影响。

您可以将用户 ID 附加到数据库文件名中。您可以拥有某种 LRU 系统,如果您拥有超过 4 个数据库(或者超过一定数量的数据),您会自动删除最旧的数据库。

此选择的具体细节取决于您,因为您知道要使用多少数据存储空间,以及有多少用户可能会在同一设备上使用该应用程序。