Сложно ответить на проблему с вашим вопросом, поскольку она зависит от того, как сценарии используются в том, чего вы пытаетесь достичь. Вы также не говорите, какой сервер БД вы используете, поскольку есть инструменты, которые могут упростить некоторые задачи.
Приводя свои пункты в порядок, вот несколько советов, которые, вероятно, будут сильно отличаться от всех остальных :)
- Должен ли я включить базу данных CREATE
утверждение?
Какую альтернативу вы думаете использовать? Если ваш вопрос заключается в том, следует ли поместить оператор CREATE DATABASE
в тот же сценарий, что и при создании таблицы, это зависит. При разработке БД я использую отдельный скрипт создания БД, так как у меня есть скрипт для удаления всех объектов, поэтому мне не нужно снова создавать базу данных.
- Должен ли я создавать пользователей для базы данных в том же сценарии?
Я бы не стал, просто потому что пользователи вполне могут измениться, а ваша схема - нет. Можно также управлять этими изменениями в меньшем сценарии.
- Правильно ли отключать проверку FK перед выполнением тела скрипта?
Если вы импортируете данные в попытке восстановить базу данных, вам, возможно, придется это сделать, если вы используете идентификаторы автоматического приращения и хотите сохранить те же значения. Также вы можете импортировать таблицы «не по порядку» и не выполнять проверки.
- Могу ли я включить весь сценарий в транзакцию?
Да, вы можете, но опять же, это зависит от типа скрипта, который вы запускаете. Если вы импортируете данные после перестройки БД, тогда весь импорт должен сработать или потерпеть неудачу. Тем не менее, ваш файл транзакций будет огромным во время импорта.
- Лучше ли генерировать 1 скрипт для каждой базы данных, чем один скрипт для всех из них?
Опять же, в целях обслуживания, вероятно, лучше хранить их отдельно.