Java/Android中的用户挑战关系设计

Java/Android中的用户挑战关系设计,java,android,database-design,Java,Android,Database Design,我刚刚开始应用程序开发,目前正在编写一个Android应用程序,该应用程序拥有注册用户和一个“挑战”列表,他们可以选择这些挑战,然后将其标记为完成/失败。 计划是最终将所有用户/challenge/etc数据存储在数据库中,尽管我还没有实现这一点 我遇到的问题是——在我当前的设计中,每个用户都有包含当前挑战和已完成挑战的列表变量,例如两个ArrayList字段。 用户当前从不同质询对象的列表视图中选择质询,然后将这些质询对象添加到用户的CurrentChallenges列表中 我没有说明的是如何

我刚刚开始应用程序开发,目前正在编写一个Android应用程序,该应用程序拥有注册用户和一个“挑战”列表,他们可以选择这些挑战,然后将其标记为完成/失败。 计划是最终将所有用户/challenge/etc数据存储在数据库中,尽管我还没有实现这一点

我遇到的问题是——在我当前的设计中,每个用户都有包含当前挑战和已完成挑战的列表变量,例如两个ArrayList字段。 用户当前从不同质询对象的列表视图中选择质询,然后将这些质询对象添加到用户的CurrentChallenges列表中

我没有说明的是如何构造它,以便当用户接受挑战时,他们有自己独特的挑战副本,可以独立标记为已完成等,而此时选择挑战1的每个用户,只需添加与选择挑战1的其他用户具有相同ID等的相同挑战

我想我可以让每个不同的挑战都是它自己的挑战子类,并为每个选择该挑战类型的用户分配一个该类的不同实例,但是这似乎是一个非常混乱/低效的方法,因为所有不同的类基本上都是相同的

有人对这个案例有什么好的想法或设计模式吗?最好是一个解决方案,该解决方案将与以后将这些挑战存储在数据库中并可能使用ORM兼容

非常感谢你的建议,
E

我会将每个用户不同的挑战的每个方面都转移到一个新的
尝试
类中。因此,
Challenge
可能有
name
description
等变量,
trunt
可能有
inProgress
completed
等变量。显然,这些只是示例,用实际存储的数据替换它们

现在,在您的
User
课程中,您可以使用
Map
记录挑战。将其设置为
地图
,每个
用户
将能够为每个
挑战
存储一次
尝试
,以记录他们的进度。
Challenge
实例在用户之间共享,但是对于
User
Challenge
的每个组合都有一个
尝试
实例



稍后实现数据库时,
挑战
用户
尝试
将各自转换为一个表<代码>尝试
将为其他两个表都提供外键。不幸的是,我没有太多地使用ORM,所以我不确定它们是否能正确地使用
映射。

这就是它当前的设置方式,所以可能我误解了它,毕竟我还可以。我认为这意味着挑战只有一个isCompleted值,而不是每个用户都有一个isCompleted值。这显然是一个潜在的解决方案,我会考虑使用地图,谢谢你的建议。