大家好,我正在考虑如何为 android 完成一些数据库设计,并且我在考虑以下是否可行。
我正在尝试创建一个公司员工数据库,其中公司与员工有多对多关系,而员工又与其员工详细信息有一对一关系,具体取决于他所在的公司。基本上像这样
- 公司对员工:多对多
- 员工到 employee_details:一对一
所以现在的问题是我正在考虑使用 Android 设备来浏览我正在考虑如何填充信息的信息?我应该:
- 让网络服务器处理上述关系的 ORM,并将来自设备的每个调用作为单独的 httpConnect 调用处理?或
- 我是否应该让设备每次都通过下载信息与网络服务器同步,并让 Android 设备处理这种关系?
我希望设备能够无延迟地浏览信息(这使得方法 2 似乎应该是正确的选择,因为它将整个数据库同步到手机中并且浏览使用的是 sqlite)。但是有哪些选择呢?
有什么提示和意见吗?希望这不会造成混淆!谢谢 !
最佳答案
即使是第二个选项也可能看起来更好,但它可能更复杂,并且对于较大的数据集,同步可能需要很长时间,因此您在浏览信息时不会有延迟,但用户可能会等待很长时间该应用程序甚至会启动(想象一下如果用户使用 3G 或更糟糕的 EDGE)。通常第二种解决方案有这些挑战:
- 要从数据库中提取多少信息?全部?只是一些公司?只有一些员工?
- 如何更新存储状态?重新加载一切?重新加载只有差异?如何寻找差异?是否需要推送通知?
- 多久重新加载一次?什么时候进行初始加载?
这是为了阅读。如果您还想在移动设备上进行一些修改,您可以肯定整个过程会更糟,因为在将多个设备的状态同步回主数据库时,您必须避免数据修改冲突。
开始的简单方法是结合使用这两种方法:
- 没有本地数据库
- 数据在需要时按需加载。例如,当用户打开应用程序时,您将加载前 50 家公司。当他请求更多时,您将加载另外 50 个,或者您将加载满足某些搜索条件的公司。当用户打开公司时,您将显示前 50 名员工,您将以与公司相同的方式与他们合作,并提供详细信息。
- 修改总是意味着对真实数据库的持久化更改
- 如果您不需要始终使用最新数据,您可以实现一些本地缓存并将一些数据缓存几分钟。
关于android - android平台上的数据库关系设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478574/