我提出其中有一個數據庫模型的應用:在同步到服務器之前,在本地android db上設置什麼主鍵?
Item (int id, String name, String description, Date updatedDate, boolean isSynced)
的Item
的id
是它的主鍵(在當地以及服務器)和 id
是在服務器的MySQL數據庫自動生成的。我正在使用realm在Android設備上存儲Items
。
用戶可以在帶/不帶互聯網的設備上創建和編輯Items
。數據庫在互聯網連接可用時同步。
所以當用戶保存一個新Item
,那麼什麼id
我應該保存它的本地數據庫,以便與服務器同步它並不會造成問題
例:
約翰有3 Items
在他的Moto X以及三星S6和兩個手機都同步到服務器。
他把極限摩托飛行模式和三星S6其被同步到服務器增加了一個Item
。現在
,S6有項目與IDS - > 1,2,3,4
和極限摩托有項目與IDS - > 1,2,3
當摩托X將連接到互聯網,然後它會下載Item
與id
= 4,但它仍然在飛機模式。
雖然Moto X仍然處於離線狀態,但約翰在其上添加了一個Item
。我應該在本地db上給這個新的Item
分配什麼樣的ID,以便在Moto X同步時不會造成任何問題? John應該能夠在離線Moto X上編輯這個新的Item
,所以id不能保持爲空。
謝謝
每次當您從任何設備從服務器添加項目回到它的主鍵/唯一的ID和更新與響應ID添加的項目.. \ – koutuk
是關當然你也可以通過離線本地主鍵編輯添加一個明杆多服務器時間主鍵更新新的服務器主鍵coloum – koutuk
或者你可以設置一些規則的id。就像在本地創建的項目id在0xF0000000開始(僅對該設備有意義),並且在與服務器同步後,該id將由服務器分配給類似於0x00000012(由所有設備/服務器全局使用)的東西。然後,在本地使用的臨時可能會被丟棄。 – beeender