Как структурировать базу данных SQLite для автономной поддержки? - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь предоставить автономную поддержку в моем приложении, чтобы пользователь мог читать информацию и без интернета.Я создаю приложение, чтобы показать некоторые пакеты от разных компаний.Я создал свой API и следующую базу данных на удаленном сервере.

companies -- id, name
duration-- id, type (type could be, monthly, weekly, yearly)
packages -- id, name, company_id, duration_id 

Мой API возвращает результат как

{  
   "id":3,
   "package":"premimum",
   "company_id":6,
   "duration_id": 5,
}

Теперь я хочу сохранить всю информацию, извлеченную из API, влокальная база данных SQLite.Теперь я хочу знать, как я должен структурировать свою локальную базу данных?я должен структурировать так же, как удаленная база данных?я должен создать три таблицы в локальной базе данных SQLite так же, как?

companies -- id, name
duration-- id, type (type mean package duration, monthly, yearly, daily)
packages -- id, name, company_id, duration_id 

Если да, то id будет отличаться в локальной базе данных и в удаленной базе данных, поскольку обе базы данных будут генерировать собственную primary keyкак я могу справиться с этим?или что-то, что вы можете предложить мне сохранить тот же идентификатор?или я должен оставить id другим?

1 Ответ

0 голосов
/ 21 марта 2019

Вам не обязательно нужны внутренние идентификаторы в вашей локальной базе данных, чтобы соответствовать идентификаторам вашей базы данных облачного сервера.Например, если вы используете Parse в качестве облачного сервера, Parse создаст свой собственный внутренний идентификатор объекта.Ваше приложение не должно знать их.

Сказав это, я настоятельно рекомендую вам иметь общий ключевой атрибут между вашим локальным объектом и облачным объектом, чтобы вы могли синхронизировать их.

Например, вы можете добавить атрибут package_id как для локального, так и для облачного объекта.Это package_id будет одинаковым для обеих сторон, так что вы можете обновить локальный объект при обновлении удаленного объекта и наоборот.

Например, вот код для создания объекта наСервер анализа:

ParseObject gameScore = new ParseObject("GameScore");
gameScore.put("score", 1337);
gameScore.put("playerName", "Sean Plott");
gameScore.put("cheatMode", false);
gameScore.saveInBackground();

Вы можете получить этот объект из приложения следующим образом:

ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore");
query.getInBackground("xWMyZ4YEGZ", new GetCallback<ParseObject>() {
  public void done(ParseObject object, ParseException e) {
    if (e == null) {
      // object will be your game score
      int score = object.getInt("score");
      String playerName = object.getString("playerName");
      boolean cheatMode = object.getBoolean("cheatMode");
    } else {
      // something went wrong
    }
  }
});

Я предлагаю вам прочитать документацию для получения дополнительной информации о хранении объекта на сервере Parse:https://docs.parseplatform.org/android/guide/

Кроме того, эта библиотека может помочь вам синхронизировать данные между локальной базой данных и сервером Parse: https://github.com/ntoskrnl/DataSync

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...