Android应用程序数据存储设计

Android应用程序数据存储设计,android,sqlite,Android,Sqlite,我正在开发一个用于家庭作业管理的Android应用程序。我是一名大学四年级学生,所以我在大型项目上的经验非常有限,但我想把这个应用程序的所有部分都设计好,而不是简单地拼凑起来。这包括数据的存储方式 我们有两个主要对象/实体:Task和Subject。即使有人在大学期间一直使用该应用程序,并且从不删除任何内容,我猜最多也会有几千个任务和几百个主题(并非所有主题都会同时显示)。该应用程序的初始版本不会与服务器同步数据,但这在将来肯定是可能的,所以我想在设计时考虑到这一点。我们还可以选择让用户互相发送

我正在开发一个用于家庭作业管理的Android应用程序。我是一名大学四年级学生,所以我在大型项目上的经验非常有限,但我想把这个应用程序的所有部分都设计好,而不是简单地拼凑起来。这包括数据的存储方式

我们有两个主要对象/实体:
Task
Subject
。即使有人在大学期间一直使用该应用程序,并且从不删除任何内容,我猜最多也会有几千个任务和几百个主题(并非所有主题都会同时显示)。该应用程序的初始版本不会与服务器同步数据,但这在将来肯定是可能的,所以我想在设计时考虑到这一点。我们还可以选择让用户互相发送任务

以下是我的问题:

  • SQLite数据库是存储我们可能拥有的数据量的最佳选择,还是将其序列化为XML或JSON,然后在应用程序开始工作时将其加载到内存中
  • 我习惯用物体来思考。这意味着,如果我使用一个数据库,并且它有一个任务表和一个主题表,我的第一反应就是将每个数据库表行转换为一个相应的对象以供查看/编辑。(对象的setter将包含验证逻辑。)这是一种好的/有用的/必要的思考方式吗?如果没有,还有什么选择

  • 谢谢你的帮助

    1。SQLite数据库是存储我们可能拥有的数据量的最佳选择,还是将其序列化为XML或JSON,然后在应用程序开始工作时将其加载到内存中?

    是的,SQlite将是您的选择。它将为您提供结构化格式,将来如果您希望从远程端访问数据,可以使用相同的表结构,而无需对代码进行太多更改

    2。我习惯用物体来思考。这意味着,如果我使用一个数据库,并且它有一个任务表和一个主题表,我的第一反应就是将每个数据库表行转换为一个相应的对象以供查看/编辑。(对象的setter将包含验证逻辑。)这是一种好的/有用的/必要的思考方式吗?如果没有,还有什么选择?

    您可以简单地执行查询来操作数据。
    但是,如果您将数据库存储在移动设备中,请不要忘记将其加密。

    这个问题涉及面很广,因此下面的评论可能不是100%正确,因为我没有关于您系统的所有信息

  • SQLite比文件(JSON或XML)更适合存储数千条记录。如果您的数据不是静态的,即在使用您的应用程序期间会发生更改(我相信您也是如此),则情况尤其如此。您可以利用现有的记录插入、更新、删除、使用索引等功能

  • 是的,您通常创建与数据库相似的对象。但通常不需要将数据库中的每条记录都转换为对象。根据您希望在UI中显示的内容,通常会在数据库中查询有限数量的对象。当然,如果你需要展示所有的,比如说,任务,你需要把它们都拿出来


  • 我最近问了一个与此相关的问题,得到了一些很好的回答。检查这里-对于将来关注这个问题的人(特别是与问题2相关的人),您可能希望了解对象关系映射框架,它自动处理对象和表之间的转换。谢谢!因此,您认为在创建或编辑任务时,将任务的数据库记录转换为对象,使用对象的setter进行更改并验证更改,然后在编辑完成后将信息写回数据库是否有意义?