В наших проектах мы используем несколько комбинированный подход: у нас есть ядро нашей программы в качестве корня и другие функции в подпапках:
root/
plugins/
auth/
mail/
report/
и т.д.
Во всех этих папках у нас есть как DDL, так и DML-скрипты, почти все из них могут быть запущены более одного раза, например. все пакеты определены как create or replace...
, все сценарии вставки данных проверяют, существуют ли данные, и так далее. Это дает нам возможность использовать почти все сценарии, не думая, что мы можем что-то сломать.
Очевидно, что этот сценарий не может применяться для create table
и подобных операторов. Для этих сценариев мы вручную написали небольшой сценарий bash, который извлекает указанные файлы и запускает их без ошибок при определенных ошибках ORA, например: ORA-00955: name is already used by an existing object
.
Также все файлы смешаны в каталогах, но различаются расширениями: .seq
идет в последовательности, .tbl
идет в таблице, .pkg
идет в интерфейсе пакета, .bdy
идет в теле пакета, .trg
идет для запуска так далее ...
Также у нас есть соглашение об именах, обозначающее префиксы для всех наших файлов: у нас может быть таблица cl_oper.tbl
с последовательностями и триггерами cl_oper.seq
и cl_oper.trg
и cl_oper_processing.pkg
вместе с cl_oper_processing.bdy
с логикой для упомянутых объектов. С этим соглашением об именах в файловых менеджерах очень легко увидеть все файлы, связанные с некоторой единицей логики для нашего проекта (в то время как группировка в каталогах по типам объектов не обеспечивает этого).
Надеюсь, эта информация вам как-то поможет. Пожалуйста, оставляйте комментарии, если у вас есть какие-либо вопросы.