1

我有两个表,SyncedComments并且QueuedComments,后者保存本地评论,直到它们与网络服务器同步,当它们成功同步时,它们被放置在同步表中,我的应用程序应该对每种类型都无动于衷。我通过 CursorLoader 加载评论,当用户阅读它们时,它们可能会被移动到同步表中。假设用户也可以编辑评论,也许在他们被移动的时候,所以应用程序应该知道评论在哪里,不管它是表。

为了支持这一点,我想到了一个包含 3 列的表,local_id、synced_id 和 queued_id,local_id 是持久的,并且只是作为对其他两个 id 之一的引用。当创建评论时,插入新行,其 sync_id 设置为 NULL,队列 id 已给出,当评论被移动时,queue_id 设置为 NULL 并设置 sync_id。这样我的应用程序只需要始终引用本地 id。

这个解决方案看起来如何?有什么缺陷吗?它可以做得更聪明吗?

4

1 回答 1

1

我首先将所有评论放在一个表中,并带有评论是否同步的标志(实际上它可能是服务器上的 ID,设置为 NULL 直到同步,然后从服务器获取值)。这将使您减少到 1 个表而不是 3 个,使显示所有评论更容易(因为您不需要进行联合),最重要的是避免在显示时同步评论时出现问题,因为评论不会移动到任何地方。而且它对数据库文件的写入更少,因此它会导致更少的碎片和更少的对闪存设备的写入。

于 2012-11-26T08:34:51.683 回答