Сначала присвойте каждой таблице уникальный идентификатор - первичный ключ (PK)
Таблица вопросов - отношение один к одному с пользователем
Таблица ответов - отношение один к одному с вопросом
Таблица пользователя - одинМногие отношения с вопросом
<b>Question</b>
+--------------+------------+------------------+
| int | Id | PK |
| varchar(max) | question | |
| int | userId | FK (Foreign Key) |
| bool | answered | |
| bool | correct | |
+--------------+------------+------------------+
<b>Answer</b>
+--------------+------------+----+
| int | Id | PK |
| int | questionId | FK |
| varchar(max) | reason | |
+--------------+------------+----+
<b>User</b>
+---------------+-------------+--------------------------------------------+
| int | Id | PK |
| varchar (250) | deviceToken | (UUiD) // some unique identifier per phone |
+---------------+-------------+--------------------------------------------+
// other relevant stuff
Когда приложение загружено, пользователь может быть без регистрации зарегистрирован, используя UUID устройства.Центральная база данных должна будет отслеживать все эти вопросы и ответы на них, а не уничтожать их все и начинать заново.100 строк - это не много, но пользователи могут столкнуться с тысячами и более.В обновлении не имеет значения, что заполнение локальной базы данных в телефоне может быть медленным (хотя при таком количестве строк это не обязательно будет медленно, для базы данных с миллионами строк потребуется время), поскольку ожидается, что обновления потребуютвремя.
Если пользователь меняет устройство, эта информация не передается на новое устройство.Каждое устройство рассматривается как новый пользователь.Я считаю, что это хорошо работает, если вы не хотите, чтобы люди регистрировались, но хотели сохранить данные во время обновлений, или если приложение удалено и переустановлено на одном устройстве.У него есть свои ограничения, как и у людей, которые хотят зарегистрироваться.Если пользователи хотят начать игру заново с того же устройства, вы всегда можете предоставить опцию «Сбросить статистику» и затем стереть эти данные.
Общие настройки также можно использовать для сохранения пользователя.настройки для приложения, я думаю, что это может быть излишним для сотни вопросов, было бы лучше для хранения этой информации в базе данных SQLite;информация хранится на сервере.Вы не можете стирать данные каждый раз, когда происходит обновление, вы должны вести текущие записи о прогрессе потребителя.Вы не можете полагаться на устройство потребителя, чтобы сохранить информацию.Если есть какая-либо информация, которую вы хотите отслеживать, вы должны взять на себя ответственность за нее.
Эта информация может храниться локально на телефоне и регулярно синхронизироваться с сервером.
В наших приложениях именно так мы и поступаем, данные обновляются, и у нас миллионы строк.Не стесняйтесь задавать больше вопросов, однако дать фактическое руководство (или код) о том, как все это работает, - довольно широкий ответ для переполнения стека.