Проектирование отношений с базами данных на платформах Android - PullRequest
1 голос
/ 25 июня 2011

Привет всем, я пытаюсь подумать о том, как сделать несколько проектов баз данных для Android, и я думаю, возможно ли следующее.

Я пытаюсь создать базу данных компании-сотрудника, в которой у компании есть отношения многие-ко-многим с сотрудниками, которые, в свою очередь, имеют отношение один-к-одному с данными своего сотрудника, в зависимости от того, какая компания онв. В основном, как это

  1. Компания на сотрудника: многие ко многим
  2. Сотрудник на сотрудника_детали: один на один

Итак, проблема в том, что яя думаю об использовании устройства Android для просмотра информации, которую я думаю, как я должен заполнить информацию?Должен ли я:

  1. иметь ORM для вышеуказанных отношений, обрабатываемых веб-сервером, и обрабатывать каждый вызов с устройства как отдельный вызов httpConnect?или
  2. следует ли мне каждый раз синхронизировать устройство с веб-сервером, загружая информацию, и должно ли устройство Android обрабатывать отношения?

Я хочу, чтобы устройство могло просматривать информацию без задержек (что делает метод 2 правильным выбором, поскольку он синхронизирует всю базу данных с телефоном, а просмотр использует sqlite),Но какие есть варианты?

Есть советы и комментарии?Надеюсь, это не смущает!Спасибо !

1 Ответ

1 голос
/ 25 июня 2011

Даже второй вариант может выглядеть лучше, поскольку он может быть гораздо более сложным, и синхронизация может занять много времени для больших наборов данных, поэтому у вас не будет задержки при просмотре информации, но пользователь может долго ждать, прежде чем приложение даже запускается (представьте, если у пользователя 3G или даже хуже EDGE). Как правило, второе решение имеет следующие проблемы:

  • Сколько информации вытащить из базы данных? Все? Только некоторые компании? Только некоторые сотрудники?
  • Как обновить сохраненное состояние? Перезагрузить все? Перезагрузить только отличия? Как найти отличия? Потребуются ли push-уведомления?
  • Как часто делать перезагрузку? Когда делать начальную загрузку?

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

Простой способ начать - использовать комбинацию обоих подходов:

  • Нет локальной базы данных
  • Данные загружаются по запросу при необходимости. Например, когда пользователь открывает приложение, вы загрузите первые 50 компаний. Когда он запросит больше из них, вы загрузите еще 50, или вы загрузите компании, удовлетворяющие некоторым критериям поиска. Когда пользователь откроет компанию, вы покажете первых 50 сотрудников и будете работать с ними так же, как с компаниями, с деталями.
  • Модификация всегда означает сохранение изменений в реальной базе данных
  • Если вам не нужны всегда свежие данные, вы можете реализовать локальный кеш и кешировать некоторые данные в течение нескольких минут.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...