Как спланировать изменения схемы в базе данных SQLite? - PullRequest
6 голосов
/ 30 апреля 2010

В настоящее время я разрабатываю приложение, которое будет хранить данные в базе данных SQLite . База данных будет иметь гораздо больший доступ для чтения, чем для записи (фактически она будет заполнена данными один раз, и тогда произойдет почти только чтение). Поэтому производительность чтения очень важна. Схема, которую я сейчас разрабатываю, очень вероятно изменится в будущем с добавлением дополнительных столбцов и таблиц. У меня нет большого опыта работы с базами данных в целом. Мой вопрос, особенно в SQLite, есть ли какие-либо подводные камни, которые следует учитывать при изменении схемы? Есть ли какие-либо модели или лучшие практики для планирования таких случаев?

Ответы [ 2 ]

7 голосов
/ 01 мая 2010

Вот несколько предложений:

  1. Не используйте select * from ..., потому что значение * меняется с изменением схемы; явно назовите столбцы, которые использует ваш запрос
  2. Сохранить номер версии схемы в базе данных и сохранить код в приложении для преобразования из версии N схемы в версию N + 1; тогда весь код в приложении работает с последней версией схемы; это может означать наличие значений по умолчанию для заполнения добавленных столбцов
  3. Вы можете избежать копирования таблиц для обновлений схемы с SQLite версии 3.1.3 или выше, которая поддерживает ALTER TABLE ADD COLUMN...
0 голосов
/ 30 апреля 2010

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

...