2011-06-25 49 views
1

嗨,大家我想要考慮如何讓一些數據庫設計完成android和我想如果以下是可能的。Android平臺上的數據庫關係設計

我試圖創建一個公司員工數據庫,其中一個公司與員工許多一對多的關係,其又具有與它的員工詳細信息一比一的關係,取決於他在這家公司。基本上是這樣的

  1. 公司員工:多對多
  2. 員工到employee_details:一對一

所以,現在的問題是,我想使用Android設備瀏覽的信息,我在想我怎麼樣填充信息?我應該:

  1. 是否具有上述關係的ORM用於處理由網絡服務器處理的每個來自設備的呼叫並作爲單獨的httpConnect呼叫?或
  2. 我應該讓設備每次通過下載信息與web服務器同步,並讓android設備處理關係?

我希望設備能夠瀏覽信息沒有滯後(這使得它似乎方法2應該是正確的選擇,因爲它將整個數據庫同步到手機和瀏覽使用sqlite)。但那裏有什麼選擇?

任何的提示和意見?希望這不會造成混淆!謝謝 !

回答

1

即使第二個選項看起來更好,它可能會更復雜,並且同步可能需要較長時間才能處理較大的數據集,因此在瀏覽信息時您不會有滯後現象,但用戶可以等待很長時間甚至在應用程序開始之前(想象如果用戶在3G或甚至更糟糕的EDGE)。通常第二種解決方案有這些挑戰:

  • 要從數據庫中提取多少信息?所有?只有一些公司?只有一些員工?
  • 如何更新存儲狀態?重新加載所有內容?只重新加載差異?如何找到差異?它需要推送通知嗎?
  • 重新加載的頻率如何?何時做初始加載?

這是供閱讀。如果您還想在移動設備上進行一些修改,則可以確定整個過程會更糟糕,因爲在將多個設備的狀態同步到主數據庫時,必須避免數據修改衝突。

最簡單的方式開始使用這兩種方法的某種組合:

  • 沒有本地數據庫
  • 數據在需要時按需加載。例如,當用戶打開應用程序時,您將加載前50家公司。當他要求更多人時,你會加載另外50人,否則你會加載符合某些搜索條件的公司。當用戶打開comapany時,您將顯示前50名員工,您將以與公司相同的方式與他們一起工作,具體細節也一樣。
  • 修改總是意味着更改真實數據庫
  • 如果您不需要總是新的數據,您可以實現一些本地緩存並緩存一些數據幾分鐘。
+0

您好Mmka先生(希望我沒有解決您的錯誤),謝謝您的提示,是的,我在想什麼會實際上提高用戶體驗。運行此類系統的最終目的是實際上在數據庫上同時運行ORM系統還是同時進行同步?那麼Iphone如何讓它變得如此快速? – jamen

+0

儘管無關緊要,但請記住,簡單地傳輸JSON對象(您的數據行)可以用gzip/zip進行大規模壓縮。根據我的經驗,我能夠將請求數據的50kb減少到8kb。這使我能夠爲移動設備安排大約500行的各種數據,並且管理的大小也是可以管理的。 – Eric