我有一个依赖MySQL数据库的web应用程序,为此我正在考虑构建一个iPhone应用程序。此应用程序允许用户在web应用程序上浏览/插入/更新/删除其帐户上的数据。
最简单的方法是将iPhone应用程序简单地构建为web应用程序的接口,即每个操作都需要连接到web。不过,我希望iPhone应用程序有自己的“离线”版本的数据库。这不仅可以让用户离线工作,还可以提供更好的体验,因为一切都在本地意味着一个更快、更具响应性的应用程序。
我会通过使用时间戳和保留最新版本来处理冲突(我已经使用了软删除,即当用户删除一条记录时,我只是设置一个标志),但我还没有完全弄清楚如何处理插入。实际上,如果用户在脱机(iPhone应用程序)和联机(web应用程序)数据库中都插入新项,则会出现主键冲突(我的所有表都有一个以auto increment作为主键的整数字段)。我怎么处理这个问题?
我在考虑使用两列主键,一个是自动递增的整数,第二个是特定于“设备”的。这样,通过web应用程序添加的新记录将具有ID 1-web、2-web等,而通过iPhone应用程序1-iPhone、2-iPhone等创建的记录。。。这将允许合并两个数据库而不发生冲突。你觉得这个主意怎么样?