2017-02-12 4 views
0

Я пытаюсь обернуть голову вокруг наиболее эффективного способа реализации базы данных в спортивной симовой игре, над которой я работаю для Android.Использование базы данных для сохранения данных игрока/команды в приложении для Android-симулятора

В настоящее время в приложении пользователь может выбрать команду для тренировки, сима через свое расписание, изменить свою линейку и посмотреть статистику своих игроков по ходу сезона. Пока нет функции сохранения, поэтому я подумал, что сохранить всю статистику игрока, списки команд и т. Д. Можно реализовать с помощью базы данных.

Прямо сейчас, когда пользователь выбирает команду, у меня есть объект лиги, который генерирует все объекты команды, которые, в свою очередь, имеют объекты игрока. Я пытаюсь обернуть вокруг всех вещей, которые мне придется изменить в моем приложении с помощью базы данных. Я предполагаю, что когда я создам лигу, я буду много писать в базу данных (команды, игроки и т. Д.), А затем, когда пользователь уйдет и снова запустит приложение, мне придется прочитать все эти данные в и воссоздать все объекты лиги, команды и игрока? Это похоже на правильный путь? Я чувствую, что я немного путаюсь, но у меня нет большого опыта в использовании баз данных с чрезвычайно объектно-ориентированным приложением.

+1

Если вы знакомы с объектами и не базами данных, смотрите в базе данных Realm –

+0

@ cricket_007 Realm выглядит действительно интригующим. Знаете ли вы, насколько легко было бы преобразовать мои текущие классы в «классы Realm»? В моих классах есть собственные методы, которые делают важные вещи для игры. Например, мой класс Team имеет метод, который случайным образом генерирует объекты Player и добавляет их в Team. Будет ли это легко совместимо с такими вещами? – ccmetz92

+0

Методы должны быть в порядке, но если у вас есть наследование, то это будет проблемой, потому что вам нужно расширить класс RealmObject –

ответ

1

Если вы не публикуете все команды во всех видах спорта во всем мире, я думаю, что sqlite подходит для вашего дела.

Это прост в использовании, отлаживается и позволяет подготовить/редактирование вашей базы данных с помощью таких инструментов, как SQLite spy, SQLite Database browser или таких. Каждый инструмент имеет свою хорошую и плохую/отсутствующую функцию, но вы найдете отличный материал для разработки, а затем подготовьте SQLiteDatabase для своей начальной базы данных.

Если вы уже писали объекты, вы оба могли расцепить их с DTO подходом упорствовать команды/ростеры/др., или выбрать непосредственно сделать их «persisteable» писать правильные методы (то есть. Refresh() , delete() и т. д.) внутри классов, которые у вас уже есть, SQLiteQueryBuilder очень полезен.

Как правило, величина «чистого большого пальца» имеет значение UPDATE для некоторых (3-4) строковых столбцов в таблице среднего размера (5-10 тыс. Строк) занимает миллисекунды (скажем, 5-30 мс). Для чтения индекс, основанный на SELECT *, возвращает объект SQLiteCursor почти сразу (< 5 мсек.), Так что выполнение чистых команд DML может выполняться даже внутри методов «onCreate()». Для «длинных операций», о которых вы упомянули, AsynchTask вместе с соответствующими диалоговыми сообщениями может сделать ожидание менее скучным и незамедлительно сообщить об этом пользователю.

Некоторые ограничения могут вывести из тяжелого параллельного доступа к БД или позже DDL изменения (то есть. Вы не можете добавить FK, вы должны отбросить & Воссоздать таблицу), но производительность на современных устройствах велики, и файл БД портативный.

Последнее не менее важно, documentation хорошо и много примеров доступны

+0

. Спасибо за это. Сейчас я изучаю SQLite и Realm.Есть ли у вас опыт работы в Realm? – ccmetz92

+1

нет, извините. Я использовал sqlite в двух опубликованных приложениях, и я рад, что – Shine

+0

Эй, извините, что очень поздний комментарий. Я занят работой некоторое время, и теперь я начинаю смотреть на использование sqlite в своем спортивном приложении. Делая мои объекты «устойчивыми», вы имеете в виду определение методов записи в базу данных в самих классах? Кроме того, как вы думаете, было бы излишним, если пользователь загрузит свою игру, я прочитаю из базы данных и создаю все объекты Team, Player и т. Д. В памяти? – ccmetz92