【问题标题】:Database relationships design on android platformsandroid平台上的数据库关系设计
【发布时间】:2011-06-25 15:05:56
【问题描述】:

大家好,我正在考虑如何为 android 完成一些数据库设计,我正在考虑以下是否可行。

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

  1. 公司对员工:多对多
  2. 员工到员工详细信息:一对一

所以现在的问题是我正在考虑使用 android 设备来浏览我正在考虑如何填充信息的信息?我应该:

  1. 是否将上述关系的 ORM 由 Web 服务器处理,并将来自设备的每个调用作为单独的 httpConnect 调用处理?或
  2. 我是否应该每次通过下载信息让设备与网络服务器同步,并让安卓设备处理这些关系?

我希望设备能够无延迟地浏览信息(这看起来方法 2 应该是正确的选择,因为它将整个数据库同步到手机中并且浏览使用的是 sqlite)。但是有什么选择呢?

有什么技巧和方法吗?希望这不会令人困惑!谢谢 !

【问题讨论】:

    标签: android web-services rest orm soap


    【解决方案1】:

    即使第二个选项看起来更好,它也可能更复杂,而且对于较大的数据集,同步可能需要很长时间,因此您在浏览信息时不会出现延迟,但用户可以等待很长时间应用程序甚至启动(想象一下,如果用户使用的是 3G 甚至更差的 EDGE)。通常第二种解决方案存在以下挑战:

    • 要从数据库中提取多少信息?全部?只有一些公司?只有部分员工?
    • 如何更新存储状态?重新加载所有内容?仅重新加载差异?如何发现差异?是否需要推送通知?
    • 多久重新加载一次?何时进行初始加载?

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

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

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

    【讨论】:

    • 您好 Mmka 先生(希望我没有误会您),谢谢您的提示,是的,我在想什么会真正增强用户体验。运行此类系统的最终目标是否实际上是在数据库上运行 ORM 系统并将两者同步?那么 Iphone 是如何让它变得如此流畅和快速的呢?
    • 虽然不相关,但请记住,简单地传输 JSON 对象(您的数据行)可以使用 gzip / zip 进行大规模压缩。根据我的经验,我能够将 50kb 的请求数据减少到 8kb。这让我可以将价值约 500 行的各种数据放入移动设备可管理的大小中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-12
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多