Idealnym rozwiązaniem dla Ciebie byłoby podzielenie modułów na schematy. Daje to efektywną jednostkę izolacji na moduł i jest również naturalnym rozwiązaniem dla aplikacji modułowych (moduły całkowicie izolowane i samozarządzające), zamiast zrzucania wszystkiego do jednego schematu (zwłaszcza publicznego). np.
application_database
├── public
├── module_1
│ ├── schema_version
│ ├── m1_t1
│ └── m1_t2
├── module_2
│ ├── schema_version
│ ├── m2_t1
│ └── m2_t2
...
Drugą opcją jest pozostanie przy użyciu publicznego schematu do obsługi wszystkich tabel, ale użyj indywidualnego schematu dla każdej schema_version
. Jest to mniejszy wysiłek związany z refaktoryzacją, ale z pewnością mniej elegancki projekt niż wspomniany powyżej. np.
application_database
├── public
│ ├── m1_t1
│ ├── m1_t2
│ ├── m2_t1
│ └── m2_t2
├── module_1
│ └── schema_version
│
├── module_2
│ └── schema_version
...