У меня есть база данных ms sql server с растущим числом хранимых процедур и пользовательских функций, и я вижу, что некоторые должны лучше организовать код. Моя идея состояла в том, чтобы разделить sps и функции по нескольким схемам. Схема по умолчанию будет содержать sps, вызываемые извне. API базы данных другими словами. Вторая схема будет содержать внутренний код, который не должен вызываться извне. Я бы, вероятно, сделал бы то же самое для таблиц: некоторые содержат «сырые» данные, другие содержат предварительно рассчитанные данные для оптимизации, ...
Поскольку я никогда не использовал схему, у меня есть несколько вопросов:
- Имеет ли это смысл?
- Есть ли какие-либо последствия, о которых я не знаю? Например, проблемы с производительностью, когда sp в схеме A использует таблицу в схеме X?
- Можно ли ограничить "внешний мир" использованием только sp в определенной схеме? Например: пользователю A разрешено вызывать объекты только в схеме A, но sp-объектам в схеме A все еще разрешено использовать таблицы в схеме B?
Поскольку этот вопрос несколько субъективен, я отметил его как "сообщество вики". Надеюсь, что все в порядке.