0
我正在构建一个应用程序,允许用户插入数据并与网站同步。用户也可以在网站上插入数据。有两个实体表(T1
和T2
)和一个N-M关系表(TR
)。两个或Android设备和网站之间的数据同步
数据结构(这只是举例):
T1 (_id, name, modified)
T2 (_id, name, modified)
TR (t1_id, t2_id)
我现在面临的问题是ID的数据同步。例如。设备A1和A2处于脱机状态,并在ID = 1时同时插入记录。联机同步开始后,与ID发生冲突。我想过介绍一个额外的列gid
- 类似全局ID。所以结构将是:
T1 (_id, name, modified, gid)
T2 (_id, name, modified, gid)
TR (t1_id, t2_id, t1_gid, t2_gid)
全局ID将由网站分配。
但我不确定这是否是一种好方法(从未做过这样的事情,也不知道是否会有未来的问题)。
感谢您的回答。所以,如果我明白了,'network_id'就是我的'gid',它应该是服务器上的常规主键。但关系呢?我不得不返回'network_id'-s来更新本地关系行。或者我不需要这样做,因为关系将被保存在具有本地ID的设备上,并且具有网络ID的服务器上 - 数字值将会不同,但关系本身将被保留。我对吗? –
是的,你是对的。但为了避免不可预知的错误,将网络标识符(您的全球标识符)添加到关系中会更好。因为当你改变服务器上的关系时,例如将以前不存在的项目新关系添加到现有项目中会产生一些难以调试的问题。如果所有数据都相似,那么最好。由于您的设备中包含项目的网络ID,因此无需在本地编号 –
好吧,因此我的本地设备上会有'network_id',所以表格结构将与我上面提到的相同(第二个块的代码)。但是在服务器上,不需要存储本地ID,只需在上传后为本地设备定义'id',这将是'network_id'。 –