看板 Programming 關於我們 聯絡資訊
最近受人委託在寫一個系統,使用的是Java語言+SQLite資料庫。 但對資料庫這塊不太熟,只會下基本的SQL語法, 有些問題不曉得應該在Database板問還是在這裡問, 但我覺得這似乎程設層面比較高。 我的系統是很傳統的Client-Server, Server有一個資料庫, 而Client端不止一個,每一個上面也都有自己的資料庫, 基本上Server端跟Client端的資料庫結構是完全一樣的。 需求就是Client端會自己更新資料, 然後使用者會手動將資料上傳到Client端,或從Server端下載更新的資料, 而Client-Server之間資料的傳遞是使用XML文件。 看起來很簡單,我原本的想法是, 在Server端資料庫設一個欄位是auto increment的主鍵,例如叫id, 每次Client端資料只要有新增資料的需求,在寫入自己的資料庫前, 先上傳到Server端寫進資料庫, 再由Server端回傳含Server端id欄位的資料給client, 然後client再寫進去。 這樣子至少可以確定id這個主鍵,在Server端跟client端是同步的, 如果之後要修改或刪除某一筆資料, 至少有個條件判斷的依據,例如delete from list where id=$id; 但現在確定是希望Client能夠離線獨立操作, 所以我的想法就不成立了。 想請問一下兩點, 第一點就是像我上述的問題,怎麼樣選擇一個比較適合的主鍵呢? 我有想過用時間,但由於client不止一個, 所以就算取到毫秒,雖然機會不大,但時間上也許有機會重覆到。 第二點就是請問一下, 假設某個時間點,Server端跟Client的資料表是完全相同的, Server端的資料可能隨時被其他的Client改寫, 是不是有什麼很快的方法, 可以在某Client登入後,可以馬上從未同步化的部份開始更新呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.74.200
neverfly:抱歉補充一下,SQLite原則上沒太多功能 118.169.74.200 07/21 22:16
bob123:主鍵(cid,did) cid=clientID,did則為各140.120.221.156 07/22 02:16
bob123:client上自己定 看是要用timestamp或其他140.120.221.156 07/22 02:18
bob123:說錯的話不要打我QQ...我只是個新手...140.120.221.156 07/22 02:21