В моей компании мы сохраняем каждый объект базы данных (сохраненную процедуру, представление и т. Д.) Как отдельный файл SQL и таким образом помещаем их в систему управления версиями.
До сих пор у нас была очень плоская модель хранения в нашей версионной файловой структуре:
DatabaseProject
Functions
- (all functions here; no further nesting)
StoredProcedures
- (all stored procs in here; no further nesting)
Views
- (ditto)
Для большого нового проекта мне пришла в голову другая идея: почему бы не хранить эти файлы по темам, а не в этих сборных плоских списках?
Например:
DatabaseProject
Reports
- (individual stored procs, views, etc.)
SpecificReport
- (more objects here, further nesting as necessary)
SpecificApplication
- (all types of DB objects, with arbitrarily deep nesting)
- и так далее ....
Очевидный недостаток состоит в том, что эта структура папок не накладывает никакой иерархии пространств имен на объекты базы данных; это только для организации. Таким образом, будет очень легко ввести объекты с повторяющимися именами. Вам понадобится какой-то инструмент сборки, чтобы просмотреть проект базы данных и умереть от конфликтов имен.
Я хотел бы знать: пробовал ли кто-нибудь этот метод организации файлов SQL по темам приложений в их файловой структуре с контролем версий? Стоило ли? Вы создали инструмент сборки, который будет контролировать проект, как я описал?