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

时间:2011-08-11 01:15:31

标签: android sqlite

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

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

2 个答案:

答案 0 :(得分:3)

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

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

此选择的细节取决于您,因为您知道您想要消耗多少数据存储,以及有多少用户可能在同一设备上使用该应用。

答案 1 :(得分:1)

这实际上取决于您的要求,但第3选项似乎不太实用。如果您愿意这样做,那么它与卸载和重新安装您的应用程序相同。

我可能更倾向于使用选项2,但这取决于你想在数据库中做什么。例如如果您想要跨所有用户而不是个人进行统计或查询,并且是否存在用户之间共享的公共数据。

如果您担心存储空间大小,请编写一项服务,清除属于任何未在特定时间范围内登录的用户的数据。