Ягни и сценарии создания базы данных
Вопрос
Прямо сейчас у меня есть код, который создает базу данных (всего несколько заправочных запросов на базе данных SQLite) в моем главном классе доступа к базе данных. Это кажется ненужным, так как я не собираюсь использовать код. Мне просто нужно, если что-то пошло не так, и мне нужно было воссоздать базу данных. Нужно ли мне...
- Оставьте вещи, поскольку они есть, хотя код создания базы данных составляет около четверти моего размера файла.
- Переместите код создания базы данных в отдельный скрипт. Вероятно, я буду запустить его вручную, если мне когда-нибудь нужно будет запустить его снова в любом случае, и это позволило бы выбрать его вне взгляды, работая над основным кодом.
- Удалите код создания базы данных и полагайтесь на ревизионный контроль, если я когда-нибудь ощупью себя, нужно снова.
Решение
Я думаю, что лучше держать код. Более важным, вам следует поддерживать этот код (или генерировать его) каждый раз, когда схема базы данных изменяется.
Это важно по следующим причинам.
- Вы, вероятно, будете удивлены, сколько раз вам нужно. Если вам нужно перенести свой сервер или настроить другую среду (например, тест или демонстрацию) и так далее.
- Я также обнаруживаю, что я рекомендую DDL SQL довольно часто при кодировании, особенно если я некоторое время не затронул систему.
- У вас есть ссылка на принятие решений, таких как созданные вами индексы, уникальные ключевые ключи и т. Д.
Если у вас нет дисциплинированного подхода к этому, я обнаружил, что схема базы данных может дрейфовать со временем, поскольку внесенные изменения Ad-HOC, и это может вызвать неясные проблемы, которые не найдены, пока вы не попадаете в базу данных. Еще хуже без дисциплинированного подхода (то есть ссылочного определения схемы) Вы можете обнаружить, что разные базы данных имеют тонко разную схему.
Другие советы
Мне просто нужно, если что-то пошло не так, и мне нужно было воссоздать базу данных.
Воссоздание базы данных абсолютно не исключительный случай. Этот код является частью вашего процесса развертывания на новой / другой системе, и он представляет структуру БД, с которым ваш код ожидает работать с. У вас на самом деле должны иметь интеграционные тесты, которые подтверждают это. Работа на неопределенный срок с одним сервером БД, схема которого была создана постепенно с помощью операторов SQL вручную вручную во время разработки нет то, на что ты должен положиться.
Но да, он должен быть отделен от кода доступа; Так что опция 2 правильная. Отдельный скрипт затем может использоваться тестами, а также для развертывания.