Несколько таблиц или несколько баз данных в приложении Android? - PullRequest
1 голос
/ 13 февраля 2011

Я пишу Android-приложение для создания историй с текстами, изображениями, звуками и т. Д. На данный момент у меня есть одна история, одна база данных, одна таблица, и все работает отлично.Теперь я перейду к нескольким историям и думаю о том, следует ли хранить одну базу данных с одной таблицей на историю, или иметь несколько баз данных, или их комбинацию (например, 10 таблиц на базу данных).Мне нужно будет загрузить / загрузить истории в / из службы хранения.

Ответы [ 2 ]

3 голосов
/ 13 февраля 2011

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

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

Это также должно решить проблему обдумывания отдельных баз данных или таблиц для истории.

Также имейте в виду, что вам приходится иметь дело с изменениями схемы базы данных в каждой базе данных, когда вы решаете иметь одну базу данных для каждой истории.Может быть беспорядок и сложность, когда вам нужно обновить 10 различных баз данных только потому, что вы добавили один столбец в таблицу ...

0 голосов
/ 13 февраля 2011

Я бы разделил его на разные базы данных.Я думаю, что будет намного легче развиваться.Например, версия в функции onUpdate () должна увеличиваться с каждым изменением схемы базы данных.Если у вас есть одна большая база данных, версия будет быстро увеличиваться (er).

  • Будет проще разделить код на логические файлы, так как вы можете расширить функцию SQLiteOpenHelper () для каждой базы данных (делитьи победить).
  • Вы можете просто закрыть базу данных при переключении между играми.И откройте другую базу данных.
  • Если у вас есть серьезные изменения в одной базе данных, вы можете загрузить базу данных с сервера, а не кодировать все, если у вас есть отдельные базы данных, вы сэкономите пропускную способность.
  • Если вы решите загрузить базы данных во время выполнения, каждая база данных будет иметь свой собственный SQLiteOpenHelper с необходимой информацией для загрузки.
  • В зависимости от размера базы данных (количества игр) поиск в ней может быть быстрееотдельные базы данных.

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

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