Должна ли схема всегда быть явно определена в операторе SQL? - PullRequest
1 голос
/ 17 марта 2009

Ранее я задавал вопрос:

Где (или как) мне определять схему в операторе выбора при использовании PostgreSQL?

Ответ, который я принял, состоял в том, чтобы изменить search_path для подключающегося пользователя таким образом, чтобы схему не нужно было указывать в SQL. Однако теперь я задаюсь вопросом, должен ли я всегда указывать схему в SQL, а не позволять схеме автоматически выводиться путем поиска. Похоже, это будет более безопасный подход и будет более переносимым на другие базы данных.

Этот вопрос отличается от предыдущего тем, что я хочу знать, как лучше всего определить схему в SQL, а не как это можно сделать.

Должна ли схема всегда быть явно определена в операторе SQL?

** Примечание: я бы не стал жестко кодировать имя схемы, но позволил бы ее настраивать через файл Web.config, чтобы схема могла меняться от одной установки к другой. **

Ответы [ 2 ]

2 голосов
/ 17 марта 2009

Это плохая практика - жестко кодировать схему в SQL заявлениях.

Вы должны оставить его в настройках приложения и выдать SET search_path после подключения к базе данных.

Если ваше приложение используется несколькими пользователями со своими собственными схемами, ваша жизнь станет намного проще, если вы не напишите название схемы в SQL.

Другими словами,

string query = "SELECT * FROM " + ConfigurationManager.AppSettings.Get("schema") + ".table";

плохой путь;

SQLCommand("SET search_path = " + ConfigurationManager.AppSettings.Get("schema"), connection).ExecuteNonQuery();
string query = "SELECT * FROM table";

хороший способ.

0 голосов
/ 18 марта 2009

Давайте посмотрим - в БД приложения, которое я поддерживаю, содержится около десятка схем. Каков был бы порядок, если бы я поместил их в "search_path"? И я бы добавил в конфигурацию имена схем (не имена таблиц и не полные имена таблиц)?

Как вы уже догадались, я не использую "search_path". Но, возможно, вы могли бы сохранить полные имена таблиц в конфигурации на тот случай, если вы когда-нибудь передумали насчет имен схем или самих таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...