2013-11-22 44 views
1

我正在開發用於家庭作業管理的Android應用程序。我是大學的資深人士,所以我在大型項目上的經驗非常有限,但我想很好地設計這個應用程序的所有部分,而不是隻是把東西扔在一起。這包括數據存儲的方式。Android應用程序數據存儲設計

我們有兩個主要對象/實體:TaskSubject。即使有人在整個時間使用應用程序,他們在大學裏也不會刪除任何東西,但我猜測最多會有幾千個任務和幾百個主題(並非所有主題都會一次顯示)。該應用程序的初始版本不會與服務器同步數據,但這是未來的一個明確的可能性,所以我希望設計這一點。我們也可以選擇讓用戶向對方發送任務。

這裏是我的問題:

  1. 會SQLite數據庫是用於存儲數據的,我們很可能會擁有量是最好的選擇,還是會像它序列化到XML或JSON然後將其加載到內存何時開始工作?
  2. 我已經習慣於用物體來思考。這意味着如果我使用一個數據庫並且它有一個任務表和一個主題表,我的第一個直覺就是將每個數據庫表格行轉換成相應的對象以供查看/編輯。 (對象的setter將包含驗證邏輯。)這是一個好的/有用的/必要的思考方式嗎?如果不是,還有什麼選擇?

感謝您的幫助!

+0

我最近問了一個與此有關的問題,並得到了一些很好的回答。在這裏查看 - http://stackoverflow.com/questions/19649395/proper-implementation-of-dboperations-in-async-task –

+0

對於任何人在未來看這個(特別是與問題2),你可能想看看到對象關係映射框架中,這些框架自動處理對象和表之間的轉換。 – ecraig12345

回答

0

這個問題很廣泛,所以下面的評論可能不是100%正確的,因爲我沒有關於您的系統的所有信息。

  1. SQLite更適合存儲數千條記錄而不是文件(不管它是JSON還是XML)。如果您的數據不是靜態的,尤其是在您的應用程序使用期間會發生更改(我相信您會遇到這種情況)。您可以利用現有功能進行記錄插入,更新,刪除,使用索引等。

  2. 是的,您一般會創建類似於您的數據庫的對象。但是,通常不需要將數據庫中的每條記錄都轉換爲對象。您通常會在數據庫中查詢有限數量的對象,具體取決於您想在UI中顯示的內容。當然,如果你需要展示所有的東西,比如說,任務,你需要全部展現。

+0

謝謝!那麼你是否認爲在創建或編輯任務時,將任務的數據庫記錄轉換爲對象,使用對象的設置器來製作和驗證更改,然後在編輯完成後將信息寫回數據庫是有意義的? – ecraig12345

+0

是的,我認爲這是一個很好的方法。 – Szymon

0

1. SQLite數據庫是否是存儲我們可能擁有的數據量的最佳選擇,或者將其序列化爲XML或JSON,然後在應用程序啓動時將其加載到內存中?

是SQlite將成爲您的選擇。它將爲您提供結構化格式,並且在將來如果您想從遠程端訪問數據,則可以在不改變代碼的情況下使用相同的表結構。

2.我習慣於用物體來思考。這意味着如果我使用一個數據庫並且它有一個任務表和一個主題表,我的第一個直覺就是將每個數據庫表格行轉換成相應的對象以供查看/編輯。 (對象的setter將包含驗證邏輯。)這是一個好的/有用的/必要的思考方式嗎?如果不是,還有什麼選擇?

您可以簡單地執行查詢來操作數據。 但不要忘記加密你的數據庫,如果你把它存儲在移動設備本身。