2014-03-06 46 views
1

我正在申請收集用於研究目的的健康日誌。我想要一些建築設計建議。如何在android中存儲具有可變屬性數量的數據

我的應用需求:

  1. 會有各種形式的衆多領域。
  2. 這些數據需要進行本地存儲(下一個階段是將其存儲在服務器上)
  3. 而且我們可以有新的形式,用戶基數增大
  4. 用戶還必須能夠更新先前輸入的日誌

問題

For eg : 
Form 1 : (Name , Age, Sex) 
Form 2 : (Name , Age, college, height) 
The actual form has many fields related to health information 

由於我從用戶接收到的數據將具有上述,我怎麼多種形式將數據存儲到數據庫中不同領域。此外,我想添加功能,以添加新的表單到應用程序,從而使永久形式的數據庫表不是一個好主意(在我看來)。我正在考慮將數據作爲JSON字符串存儲到具有關聯表單ID的數據庫中。

+1

JSON是一個很好的解決方案,但可能效率不高 - 但是,如果您只是針對每個表單處理一個人,這可能並不困難。另一個優點是它很容易序列化,並且可以將一個JSON字符串從一個Activity傳遞到下一個(以及保存狀態)。如果你想要一個純粹的SQL實現,你需要一個包含字段數據的主表(master_id,name)和一個詳細表(master_id,field_name,value)。 – 323go

+1

是的,這是我的想法背後使用JSON,感謝您的評論。 SQL對於我的要求將會非常複雜。有這樣的實現有其他技術嗎? –

+1

JSON或XML對我有意義。 – danny117

回答

1

選項1.將每個字段作爲其自己的列存儲在數據庫中,查詢數據庫以找到適當的字段以重新創建各種表單。

注意 - 更改字段值會更改所有表單的值,除非您指定不同的列名稱來保存不同表單下的數據。

請參閱tutorial關於創建SQlite數據庫以開始使用。

選項2.序列化散列映射並將映射存儲爲數據庫中的斑點。輕鬆添加新字段,而無需更改數據庫。缺點:無法查詢個人特徵(年齡,性別等)。當你檢索一個人的信息時,你可以檢索所有信息,並選擇你需要的信息。 (更簡單,但效率更低/魯棒性更強)。

+0

選項1並不像建議的那樣好 - 你可以很容易地在PK中引入一個master-id來區分自定義列的相關形式;這將使這個可用的解決方案。 – 323go

相關問題