如何在android中存储属性数量可变的数据

如何在android中存储属性数量可变的数据,android,database,architecture,attributes,Android,Database,Architecture,Attributes,我正在申请收集健康日志用于研究目的。我想要一些建筑设计建议 我的应用程序要求: 将有多种形式,领域众多 此数据需要存储在本地(下一阶段是将其存储在服务器上) 此外,随着用户群的增加,我们可能会有新的表单 用户还必须能够更新以前输入的日志 问题: For eg : Form 1 : (Name , Age, Sex ) Form 2 : (Name , Age, college, height ) The actual form has many fields related to hea

我正在申请收集健康日志用于研究目的。我想要一些建筑设计建议

我的应用程序要求:

  • 将有多种形式,领域众多
  • 此数据需要存储在本地(下一阶段是将其存储在服务器上)
  • 此外,随着用户群的增加,我们可能会有新的表单
  • 用户还必须能够更新以前输入的日志
  • 问题:

    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。将每个字段作为自己的列存储在数据库中,在数据库中查询适当的字段以重新创建各种表单

    注意-更改字段值会更改所有表单的值,除非为不同表单指定不同的列名以保存数据

    请参阅创建SQlite数据库以开始


    备选案文2。序列化hashmap并将该映射作为blob存储在数据库中。无需更改数据库即可轻松添加新字段。缺点:无法查询个人特征(年龄、性别等)。当你检索到一个人的信息时,你会检索到所有信息,并选择你需要的信息。(更简单,但效率较低/健壮)。

    JSON是一个很好的解决方案,但效率可能不是很高——但是,如果您只需要为每个表单处理一个人,这可能并不困难。另一个优点是它很容易序列化,您只需将JSON字符串从一个活动传递到下一个活动(以及保存状态)。如果你想要一个纯SQL实现,你需要一个主表(master_id,name)和一个包含字段数据的细节表(master_id,field_name,value)。是的,这是我使用JSON的想法,谢谢你的评论。SQL对于我的需求来说是非常复杂的。这种实现还有其他技术吗?JSON或XML对我来说很有意义。选项1并不像建议的那样好——你可以很容易地在PK中引入一个主id来区分自定义列所涉及的形式;这将使它成为一个可用的解决方案。