2011-01-13 59 views
0

我有一个网络应用程序,我可以创建一些笔记,每次我创建一个新的笔记,它会插入到一个auto_increment id表。 (很明显)同步数据库时区分数据的一种方法?

现在我想开发一个android应用程序,我也可以创建注释(将它们保存在本地sqlite中),然后将这些注释与服务器同步。

问题是,当我在手机中创建笔记时,他们将拥有自己的auto_increment id,该id很多次都与服务器中的笔记相同!

我不在乎有重复的笔记(实际上,我不认为有一种方法来区分新笔记是否重复,因为它们没有物理ID),问题是如果他们有相同的id(主键),我将无法将它们插入服务器。

有什么建议吗?

回答

0

你可以使用UUID作为你的笔记的关键。

这样,每个条目应该有一个唯一的ID,无论是在服务器上还是在客户端上创建。

要创建UUID,您可以使用UUID.randomUUID()

0

最明显的解决方案是除了数据库的auto_increment_id之外,还给每个音符赋予自己唯一的散列或GUID。

然后,您会使用这些唯一值作为同步的基础,并与每个表中的“上次同步”时间戳一起使用,以便您知道需要同步哪些数据并可以轻松确定数据是否已存在在目的地(并且应该更新)或者它是否是新笔记。

0

对不起,但我认为你的数据库结构是错误的。您不能以这种方式使用自动增量字段,不同的数据库具有断开的体系结构。自动增量值是为特定用途而创建的,如果您需要像这样合并两个表格,则必须实现不同的逻辑。使用note_id以独特的方式识别笔记,使用更多数据(即用户ID,设备ID等)使此ID唯一。在这种情况下,自动增量最多只会给你一个凌乱的体系结构