首先分配每个表一个唯一的ID - 主键(PK)
问表 - 许多与用户
回答表一一对应关系 - 一对一与问题
关系 用户表 - 一对多的关系与问题
Question
+--------------+------------+------------------+
| int | Id | PK |
| varchar(max) | question | |
| int | userId | FK (Foreign Key) |
| bool | answered | |
| bool | correct | |
+--------------+------------+------------------+
Answer
+--------------+------------+----+
| int | Id | PK |
| int | questionId | FK |
| varchar(max) | reason | |
+--------------+------------+----+
User
+---------------+-------------+--------------------------------------------+
| int | Id | PK |
| varchar (250) | deviceToken | (UUiD) // some unique identifier per phone |
+---------------+-------------+--------------------------------------------+
// other relevant stuff
当应用程序被下载时,用户可以使用设备UUID进行无提示注册。中央数据库将需要跟踪这些问题以及所回答的问题,而不是全部清理并重新开始。 100行不是很多,但用户可能会遇到1000或更多。在更新中,重新填充手机中的本地数据库可能会很慢(尽管这样的行数不一定会很慢,但有数百万行的数据库需要时间),因为预计更新需要时间。
如果用户更改设备,则此信息不会传输到新设备。每个设备都被视为新用户。我发现,如果您不想让人们注册,但希望在更新过程中保留数据,或者应用程序已卸载并重新安装在一台设备上,则此功能运行良好。它要求人们注册也有其局限性。如果用户想要使用相同设备重新开始游戏,则可以始终提供“重置统计数据”选项,然后清除该数据。
共享首选项也可以用来保存应用程序的用户设置,我认为这可能是过量的一百个问题,它最好适合将这些信息存储在SQLite数据库中;信息保存在服务器上。每次更新都无法擦除数据,必须保留当前消费者进度的记录。您不能依靠消费者的设备来保留这些信息。如果有任何信息需要追踪,您必须对此负责。
这可以存储在手机本地并定期与服务器同步。
在我们的应用程序中,这是我们如何做到的,数据在更新中保留下来,我们拥有数百万行。随意提出更多的问题,但是给出一个实际的教程(或代码),了解这些工作对于Stack Overflow来说有点宽泛。
答案应该对问题有参考约束。答案表有问题。然后你不能通过改变问题来打破它。 – danny117
@Anene你是否尝试使用where子句的更新来删除不符合你的教条的问题? –