Android平台上的数据库关系设计

时间:2011-06-25 15:05:57

标签: android web-services rest orm soap

大家好我正在考虑如何为Android完成一些数据库设计,我想如果以下是可能的。

我正在尝试创建一个公司 - 员工数据库,其中公司与员工建立多对多关系,而这反过来又与员工的详细信息保持一对一的关系,这取决于他所在的公司。基本上像这样

  1. 公司对员工:多对多
  2. 员工到employee_details:一对一
  3. 现在的问题是,我正在考虑使用Android设备浏览我正在考虑如何填充信息的信息?我应该:

    1. 是否具有上述关系的ORM,由网络服务器处理,并将来自设备的每个呼叫作为单独的httpConnect呼叫处理?或
    2. 我是否应该每次通过下载信息让设备与网络服务器同步,并让Android设备处理关系?
    3. 我希望设备能够无滞后地浏览信息(这使得看起来方法2应该是正确的选择,因为它将整个数据库同步到手机中并且浏览使用sqlite)。但那里的选择是什么?

      任何提示和评论?希望这不会令人困惑!谢谢 !

1 个答案:

答案 0 :(得分:1)

即使第二个选项看起来更好也可能更复杂,同步可能需要很长时间才能处理更大的数据集,因此您在浏览信息时不会有延迟,但用户可以等待很长时间应用程序甚至开始(想象一下,如果用户使用3G或更糟糕的EDGE)。通常,第二种解决方案存在以下挑战:

  • 从数据库中提取多少信息?所有?只有一些公司?只有一些员工?
  • 如何更新存储状态?重新加载一切?仅重新加载差异?如何找到差异?它需要推送通知吗?
  • 多久重装一次?何时进行初始加载?

这是为了阅读。如果您还想在移动设备上进行一些修改,您可以确保整个过程更加糟糕,因为在将多个设备的状态同步回主数据库时必须避免数据修改冲突。

开始的简单方法是使用两种方法的组合:

  • 没有本地数据库
  • 需要时按需加载数据。例如,当用户打开应用程序时,您将首先加载50家公司。当他请求更多他们时,你将加载另外50或你将加载满足一些搜索条件的公司。当用户打开comapany时,您将显示前50名员工,您将以与公司相同的方式使用它们,同样具有详细信息。
  • 修改始终意味着对真实数据库进行持久更改
  • 如果您不需要总是新鲜的数据,您可以实现一些本地缓存并缓存一些数据几分钟。