5.10. Ð¡Ñ ÐµÐ¼Ñ #
ÐлаÑÑÐµÑ Ð±Ð°Ð· даннÑÑ PostgreSQL ÑодеÑÐ¶Ð¸Ñ Ð¾Ð´Ð¸Ð½ или неÑколÑко именованнÑÑ ÑкземплÑÑов баз. Ðа ÑÑовне клаÑÑеÑа ÑоздаÑÑÑÑ Ñоли и некоÑоÑÑе дÑÑгие обÑекÑÑ. ÐÑи ÑÑом в ÑÐ°Ð¼ÐºÐ°Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ подклÑÑÐµÐ½Ð¸Ñ Ðº ÑеÑвеÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ обÑаÑаÑÑÑÑ Ðº даннÑм ÑолÑко одной Ð±Ð°Ð·Ñ â Ñой, ÑÑо бÑла вÑбÑана пÑи ÑÑÑановлении ÑоединениÑ.
ÐÑимеÑание
ÐолÑзоваÑели клаÑÑеÑа не обÑзаÑелÑно бÑдÑÑ Ð¸Ð¼ÐµÑÑ Ð´Ð¾ÑÑÑп ко вÑем базам даннÑÑ
ÑÑого клаÑÑеÑа. Ð¢Ð¾Ñ ÑакÑ, ÑÑо Ñоли ÑоздаÑÑÑÑ Ð½Ð° ÑÑовне клаÑÑеÑа, ознаÑÐ°ÐµÑ ÑолÑко Ñо, ÑÑо в клаÑÑеÑе не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð²ÑÑ
Ñолей joe в ÑазнÑÑ
базаÑ
даннÑÑ
, Ñ
оÑÑ ÑиÑÑема позволÑÐµÑ Ð¾Ð³ÑаниÑиÑÑ Ð´Ð¾ÑÑÑп joe ÑолÑко некоÑоÑÑми базами даннÑÑ
.
Ðаза даннÑÑ
ÑодеÑÐ¶Ð¸Ñ Ð¾Ð´Ð½Ñ Ð¸Ð»Ð¸ неÑколÑко именованнÑÑ
ÑÑ
ем, коÑоÑÑе в ÑÐ²Ð¾Ñ Ð¾ÑеÑÐµÐ´Ñ ÑодеÑÐ¶Ð°Ñ ÑаблиÑÑ. СÑ
ÐµÐ¼Ñ Ñакже ÑодеÑÐ¶Ð°Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñе обÑекÑÑ Ð´ÑÑгиÑ
видов, вклÑÑÐ°Ñ ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
, ÑÑнкÑии и опеÑаÑоÑÑ. Родной ÑÑ
еме два обÑекÑа одного Ñипа не могÑÑ Ð¸Ð¼ÐµÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе имена. Ðолее Ñого, ÑаблиÑÑ, поÑледоваÑелÑноÑÑи, индекÑÑ, пÑедÑÑавлениÑ, маÑеÑиализованнÑе пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ внеÑние ÑаблиÑÑ ÑÑÑеÑÑвÑÑÑ Ð² одном пÑоÑÑÑанÑÑве имÑн, Ñак ÑÑо, напÑимеÑ, имена индекÑа и ÑаблиÑÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¾ÑлиÑаÑÑÑÑ, еÑли они наÑ
одÑÑÑÑ Ð² одной ÑÑ
еме. Ðдно и Ñо же Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа можно Ñвободно иÑполÑзоваÑÑ Ð² ÑазнÑÑ
ÑÑ
емаÑ
, напÑÐ¸Ð¼ÐµÑ Ð¸ schema1, и myschema могÑÑ ÑодеÑжаÑÑ ÑаблиÑÑ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ mytable. РоÑлиÑие Ð¾Ñ Ð±Ð°Ð· даннÑÑ
, ÑÑ
ÐµÐ¼Ñ Ð½Ðµ огÑаниÑиваÑÑ Ð´Ð¾ÑÑÑп к даннÑм: полÑзоваÑели могÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº обÑекÑам в лÑбой ÑÑ
еме ÑекÑÑей Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
, еÑли им назнаÑÐµÐ½Ñ ÑооÑвеÑÑÑвÑÑÑие пÑава.
ÐÑÑÑ Ð½ÐµÑколÑко возможнÑÑ Ð¾Ð±ÑÑÑнений, Ð´Ð»Ñ Ñего ÑÑÐ¾Ð¸Ñ Ð¿ÑименÑÑÑ ÑÑ ÐµÐ¼Ñ:
ЧÑÐ¾Ð±Ñ Ð¾Ð´Ð½Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¼Ð¾Ð³Ð»Ð¸ иÑполÑзоваÑÑ Ð½ÐµÑколÑко полÑзоваÑелей, незавиÑимо дÑÑг Ð¾Ñ Ð´ÑÑга.
ЧÑÐ¾Ð±Ñ Ð¾Ð±ÑединиÑÑ Ð¾Ð±ÑекÑÑ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² логиÑеÑкие гÑÑÐ¿Ð¿Ñ Ð´Ð»Ñ Ð¾Ð±Ð»ÐµÐ³ÑÐµÐ½Ð¸Ñ ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð¼Ð¸.
ЧÑÐ¾Ð±Ñ Ð² одной базе ÑоÑÑÑеÑÑвовали ÑазнÑе пÑиложениÑ, и пÑи ÑÑом не возникало конÑликÑов имÑн.
Ð¡Ñ ÐµÐ¼Ñ Ð² некоÑоÑом ÑмÑÑле Ð¿Ð¾Ð´Ð¾Ð±Ð½Ñ ÐºÐ°Ñалогам в опеÑаÑионной ÑиÑÑеме, но они не могÑÑ Ð±ÑÑÑ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñми.
5.10.1. Создание ÑÑ ÐµÐ¼Ñ #
ÐÐ»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑÑ ÐµÐ¼Ñ Ð¸ÑполÑзÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° CREATE SCHEMA. ÐÑи ÑÑом Ð²Ñ Ð¾Ð¿ÑеделÑеÑе Ð¸Ð¼Ñ ÑÑ ÐµÐ¼Ñ Ð¿Ð¾ ÑÐ²Ð¾ÐµÐ¼Ñ Ð²ÑбоÑÑ, напÑÐ¸Ð¼ÐµÑ Ñак:
CREATE SCHEMA myschema;
ЧÑÐ¾Ð±Ñ ÑоздаÑÑ Ð¾Ð±ÑекÑÑ Ð² ÑÑ ÐµÐ¼Ðµ или обÑаÑиÑÑÑÑ Ðº ним, ÑказÑвайÑе полное имÑ, ÑоÑÑоÑÑее из имÑн ÑÑ ÐµÐ¼Ñ Ð¸ обÑекÑа, ÑазделÑннÑÑ ÑоÑкой:
ÑÑ ÐµÐ¼Ð°.ÑаблиÑа
ÐÑÐ¾Ñ ÑинÑакÑÐ¸Ñ ÑабоÑÐ°ÐµÑ Ð²ÐµÐ·Ð´Ðµ, где ожидаеÑÑÑ Ð¸Ð¼Ñ ÑаблиÑÑ, вклÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¼Ð¾Ð´Ð¸ÑикаÑии ÑаблиÑÑ Ð¸ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¾Ð±ÑабоÑки даннÑÑ , обÑÑждаемÑе в ÑледÑÑÑÐ¸Ñ Ð³Ð»Ð°Ð²Ð°Ñ . (ÐÐ»Ñ ÐºÑаÑкоÑÑи Ð¼Ñ Ð±Ñдем говоÑиÑÑ ÑолÑко о ÑаблиÑÐ°Ñ , но вÑÑ ÑÑо ÑаÑпÑоÑÑÑанÑеÑÑÑ Ð¸ на дÑÑгие ÑÐ¸Ð¿Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½ÑÑ Ð¾Ð±ÑекÑов, напÑимеÑ, ÑÐ¸Ð¿Ñ Ð¸ ÑÑнкÑии.)
ÐÑÑÑ ÐµÑÑ Ð±Ð¾Ð»ÐµÐµ обÑий ÑинÑакÑиÑ
база_даннÑÑ.ÑÑ ÐµÐ¼Ð°.ÑаблиÑа
но в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð¾Ð½ поддеÑживаеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑоÑмалÑного ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑÑандаÑÑÑ SQL. ÐÑли Ð²Ñ ÑказÑваеÑе Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑолÑко база даннÑÑ , к коÑоÑой Ð²Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑенÑ.
Таким обÑазом, ÑоздаÑÑ ÑаблиÑÑ Ð² новой ÑÑ ÐµÐ¼Ðµ можно Ñак:
CREATE TABLE myschema.mytable ( ... );
ЧÑÐ¾Ð±Ñ ÑдалиÑÑ Ð¿ÑÑÑÑÑ ÑÑ ÐµÐ¼Ñ (не ÑодеÑжаÑÑÑ Ð¾Ð±ÑекÑов), вÑполниÑе:
DROP SCHEMA myschema;
УдалиÑÑ ÑÑ ÐµÐ¼Ñ Ñо вÑеми ÑодеÑжаÑимиÑÑ Ð² ней обÑекÑами можно Ñак:
DROP SCHEMA myschema CASCADE;
СÑоÑÑий за ÑÑим обÑий Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼ опиÑан в Разделе 5.15.
ЧаÑÑо бÑÐ²Ð°ÐµÑ Ð½Ñжно ÑоздаÑÑ ÑÑ ÐµÐ¼Ñ, владелÑÑем коÑоÑой бÑÐ´ÐµÑ Ð´ÑÑгой полÑзоваÑÐµÐ»Ñ (ÑÑо один из ÑпоÑобов огÑаниÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей пÑоÑÑÑанÑÑвами имÑн). СделаÑÑ ÑÑо можно Ñак:
CREATE SCHEMAимÑ_ÑÑ ÐµÐ¼ÑAUTHORIZATIONимÑ_полÑзоваÑелÑ;
ÐÑ Ð´Ð°Ð¶Ðµ можеÑе опÑÑÑиÑÑ Ð¸Ð¼Ñ ÑÑ ÐµÐ¼Ñ, в ÑÑом ÑлÑÑае именем ÑÑ ÐµÐ¼Ñ ÑÑÐ°Ð½ÐµÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ. Ðак ÑÑо можно пÑименÑÑÑ, опиÑано в ÐодÑазделе 5.10.6.
СÑ
ÐµÐ¼Ñ Ñ Ð¸Ð¼ÐµÐ½Ð°Ð¼Ð¸, наÑинаÑÑимиÑÑ Ñ pg_, ÑвлÑÑÑÑÑ ÑиÑÑемнÑми; полÑзоваÑелÑм не ÑазÑеÑено иÑполÑзоваÑÑ Ñакие имена.
5.10.2. Ð¡Ñ ÐµÐ¼Ð° public #
Ðо ÑÑого Ð¼Ñ Ñоздавали ÑаблиÑÑ, не ÑказÑÐ²Ð°Ñ Ð½Ð¸ÐºÐ°ÐºÐ¸Ðµ имена ÑÑ ÐµÐ¼. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ñакие ÑаблиÑÑ (и дÑÑгие обÑекÑÑ) авÑомаÑиÑеÑки помеÑаÑÑÑÑ Ð² ÑÑ ÐµÐ¼Ñ Â«public». Ðна ÑодеÑжиÑÑÑ Ð²Ð¾ вÑÐµÑ ÑоздаваемÑÑ Ð±Ð°Ð·Ð°Ñ Ð´Ð°Ð½Ð½ÑÑ . Таким обÑазом, команда:
CREATE TABLE products ( ... );
ÑквиваленÑна:
CREATE TABLE public.products ( ... );
5.10.3. ÐÑÑÑ Ð¿Ð¾Ð¸Ñка ÑÑ ÐµÐ¼Ñ #
Ðезде пиÑаÑÑ Ð¿Ð¾Ð»Ð½Ñе имена ÑÑомиÑелÑно, и ÑаÑÑо вÑÑ Ñавно лÑÑÑе не пÑивÑзÑваÑÑ Ð¿ÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ðº конкÑеÑной ÑÑ ÐµÐ¼Ðµ. ÐоÑÑÐ¾Ð¼Ñ Ðº ÑаблиÑам обÑÑно обÑаÑаÑÑÑÑ Ð¿Ð¾ Ð½ÐµÐ¿Ð¾Ð»Ð½Ð¾Ð¼Ñ Ð¸Ð¼ÐµÐ½Ð¸, ÑоÑÑоÑÑÐµÐ¼Ñ Ð¿ÑоÑÑо из имени ÑаблиÑÑ. СиÑÑема опÑеделÑеÑ, ÐºÐ°ÐºÐ°Ñ Ð¸Ð¼ÐµÐ½Ð½Ð¾ ÑаблиÑа подÑазÑмеваеÑÑÑ, иÑполÑзÑÑ Ð¿ÑÑÑ Ð¿Ð¾Ð¸Ñка, коÑоÑÑй пÑедÑÑавлÑÐµÑ Ñобой ÑпиÑок пÑоÑмаÑÑиваемÑÑ ÑÑ ÐµÐ¼. ÐодÑазÑмеваемой ÑаблиÑей ÑÑиÑаеÑÑÑ Ð¿ÐµÑÐ²Ð°Ñ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑÐ°Ñ ÑаблиÑа, Ð½Ð°Ð¹Ð´ÐµÐ½Ð½Ð°Ñ Ð² ÑÑ ÐµÐ¼Ð°Ñ Ð¿ÑÑи. ÐÑли Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑÐ°Ñ ÑаблиÑа не найдена, Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¾Ñибка, даже еÑли ÑаблиÑа Ñ Ñаким именем еÑÑÑ Ð² дÑÑÐ³Ð¸Ñ ÑÑ ÐµÐ¼Ð°Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ .
ÐозможноÑÑÑ ÑоздаваÑÑ Ð¾Ð´Ð½Ð¾Ð¸Ð¼ÑннÑе обÑекÑÑ Ð² ÑазнÑÑ
ÑÑ
емаÑ
ÑÑложнÑÐµÑ Ð½Ð°Ð¿Ð¸Ñание запÑоÑов, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð²Ñегда обÑаÑаÑÑÑÑ Ðº конкÑеÑнÑм обÑекÑам. ÐÑо Ñакже поÑенÑиалÑно позволÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑм влиÑÑÑ Ð½Ð° поведение запÑоÑов дÑÑгиÑ
полÑзоваÑелей, злонамеÑенно или ÑлÑÑайно. ÐÐ²Ð¸Ð´Ñ Ð¿ÑÐµÐ¾Ð±Ð»Ð°Ð´Ð°Ð½Ð¸Ñ Ð½ÐµÐ¿Ð¾Ð»Ð½ÑÑ
имÑн в запÑоÑаÑ
и иÑ
иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð½ÑÑÑи PostgreSQL, добавиÑÑ ÑÑ
ÐµÐ¼Ñ Ð² search_path â по ÑÑÑи знаÑÐ¸Ñ Ð´Ð¾Ð²ÐµÑÑÑÑ Ð²Ñем полÑзоваÑелÑм, имеÑÑим пÑаво CREATE в ÑÑой ÑÑ
еме. Ðогда Ð²Ñ Ð²ÑполнÑеÑе обÑÑнÑй запÑоÑ, злонамеÑеннÑй полÑзоваÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑоздаÑÑ Ð¾Ð±ÑекÑÑ Ð² ÑÑ
еме, вклÑÑÑнной в Ð²Ð°Ñ Ð¿ÑÑÑ Ð¿Ð¾Ð¸Ñка, и Ñаким обÑазом пеÑеÑ
ваÑÑваÑÑ ÑпÑавление и вÑполнÑÑÑ Ð¿ÑоизволÑнÑе ÑÑнкÑии SQL как еÑли Ð±Ñ Ð¸Ñ
вÑполнÑли вÑ.
ÐеÑÐ²Ð°Ñ ÑÑ
ема в пÑÑи поиÑка назÑваеÑÑÑ ÑекÑÑей. ÐÑа ÑÑ
ема бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð½Ðµ ÑолÑко пÑи поиÑке, но и пÑи Ñоздании обÑекÑов â она бÑÐ´ÐµÑ Ð²ÐºÐ»ÑÑаÑÑ ÑаблиÑÑ, ÑозданнÑе командой CREATE TABLE без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑÑ
емÑ.
ЧÑÐ¾Ð±Ñ ÑзнаÑÑ ÑекÑÑий Ñип поиÑка, вÑполниÑе ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ:
SHOW search_path;
РконÑигÑÑаÑии по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð½Ð° возвÑаÑаеÑ:
search_path -------------- "$user", public
ÐеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑÑÑлаеÑÑÑ Ð½Ð° ÑÑ ÐµÐ¼Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ ÑекÑÑего полÑзоваÑелÑ. ÐÑли Ñакой ÑÑ ÐµÐ¼Ñ Ð½Ðµ ÑÑÑеÑÑвÑеÑ, ÑÑÑлка на Ð½ÐµÑ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ. ÐÑоÑой ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑÑÑлаеÑÑÑ Ð½Ð° ÑÑ ÐµÐ¼Ñ public, коÑоÑÑÑ Ð¼Ñ Ñже видели.
ÐеÑÐ²Ð°Ñ ÑÑÑеÑÑвÑÑÑÐ°Ñ ÑÑ ÐµÐ¼Ð° в пÑÑи поиÑка Ñакже ÑÑиÑаеÑÑÑ ÑÑ ÐµÐ¼Ð¾Ð¹ по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ Ð¾Ð±ÑекÑов. Ðменно поÑÑÐ¾Ð¼Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ Ð¾Ð±ÑекÑÑ ÑоздаÑÑÑÑ Ð² ÑÑ ÐµÐ¼Ðµ public. ÐÑи Ñказании неполной ÑÑÑлки на обÑÐµÐºÑ Ð² лÑбом конÑекÑÑе (пÑи модиÑикаÑии ÑаблиÑ, изменении даннÑÑ Ð¸Ð»Ð¸ в запÑоÑÐ°Ñ ) ÑиÑÑема пÑоÑмаÑÑÐ¸Ð²Ð°ÐµÑ Ð¿ÑÑÑ Ð¿Ð¾Ð¸Ñка, пока не найдÑÑ ÑооÑвеÑÑÑвÑÑÑий обÑекÑ. Таким обÑазом, в конÑигÑÑаÑии по ÑмолÑÐ°Ð½Ð¸Ñ Ð½ÐµÐ¿Ð¾Ð»Ð½Ñе имена могÑÑ Ð¾ÑноÑиÑÑÑÑ ÑолÑко к обÑекÑам в ÑÑ ÐµÐ¼Ðµ public.
ЧÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð² пÑÑÑ Ð½Ð°ÑÑ Ð½Ð¾Ð²ÑÑ ÑÑ ÐµÐ¼Ñ, Ð¼Ñ Ð²ÑполнÑем:
SET search_path TO myschema,public;
(ÐÑ Ð¾Ð¿ÑÑкаем ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ $user, Ñак как здеÑÑ Ð² нÑм Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑи.) ТепеÑÑ Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ обÑаÑаÑÑÑÑ Ðº ÑаблиÑе без ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑÑ
емÑ:
DROP TABLE mytable;
Ð Ñак как myschema â пеÑвÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² пÑÑи, новÑе обÑекÑÑ Ð±ÑдÑÑ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ ÑоздаваÑÑÑÑ Ð² ÑÑой ÑÑ
еме.
ÐÑ Ð¼Ð¾Ð¶ÐµÐ¼ Ñакже напиÑаÑÑ:
SET search_path TO myschema;
Тогда Ð¼Ñ Ð±Ð¾Ð»ÑÑе не Ñможем обÑаÑаÑÑÑÑ Ðº ÑÑ ÐµÐ¼Ðµ public, не напиÑав полное Ð¸Ð¼Ñ Ð¾Ð±ÑекÑа. ÐдинÑÑвенное, ÑÑо оÑлиÑÐ°ÐµÑ ÑÑ ÐµÐ¼Ñ public Ð¾Ñ Ð´ÑÑÐ³Ð¸Ñ , ÑÑо Ñо, ÑÑо она ÑÑÑеÑÑвÑÐµÑ Ð¿Ð¾ ÑмолÑаниÑ, Ñ Ð¾ÑÑ ÐµÑ Ñак же можно ÑдалиÑÑ.
РРазделе 9.27 Ð²Ñ ÑзнаеÑе, как еÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ манипÑлиÑоваÑÑ Ð¿ÑÑÑм поиÑка ÑÑ ÐµÐ¼.
Ðак и Ð´Ð»Ñ Ð¸Ð¼Ñн ÑаблиÑ, пÑÑÑ Ð¿Ð¾Ð¸Ñка аналогиÑно ÑабоÑÐ°ÐµÑ Ð´Ð»Ñ Ð¸Ð¼Ñн Ñипов даннÑÑ , имÑн ÑÑнкÑий и имÑн опеÑаÑоÑов. Ðмена Ñипов даннÑÑ Ð¸ ÑÑнкÑий можно запиÑаÑÑ Ð² полном виде Ñак же, как и имена ÑаблиÑ. ÐÑли же вам нÑжно иÑполÑзоваÑÑ Ð² вÑÑажении полное Ð¸Ð¼Ñ Ð¾Ð¿ÐµÑаÑоÑа, Ð´Ð»Ñ ÑÑого еÑÑÑ ÑпеÑиалÑнÑй ÑпоÑоб â Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð½Ð°Ð¿Ð¸ÑаÑÑ:
OPERATOR(ÑÑ ÐµÐ¼Ð°.опеÑаÑоÑ)
Ð¢Ð°ÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð° Ð´Ð»Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°Ð½Ð¸Ñ ÑинÑакÑиÑеÑкой неоднознаÑноÑÑи. ÐÑÐ¸Ð¼ÐµÑ Ñакого вÑÑажениÑ:
SELECT 3 OPERATOR(pg_catalog.+) 4;
Ðа пÑакÑике полÑзоваÑели ÑаÑÑо полагаÑÑÑÑ Ð½Ð° пÑÑÑ Ð¿Ð¾Ð¸Ñка, ÑÑÐ¾Ð±Ñ Ð½Ðµ пÑÐ¸Ñ Ð¾Ð´Ð¸Ð»Ð¾ÑÑ Ð¿Ð¸ÑаÑÑ Ñакие замÑÑловаÑÑе конÑÑÑÑкÑии.
5.10.4. Ð¡Ñ ÐµÐ¼Ñ Ð¸ пÑава #
Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº обÑекÑам в ÑÑжиÑ
ÑÑ
емаÑ
. ЧÑÐ¾Ð±Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ ÑÑо, Ð²Ð»Ð°Ð´ÐµÐ»ÐµÑ ÑÑ
ÐµÐ¼Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ даÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¿Ñаво USAGE Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ ÑÑ
емÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ñе полÑзоваÑели имеÑÑ ÑÑо пÑаво Ð´Ð»Ñ ÑÑ
ÐµÐ¼Ñ public. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑзоваÑели могли иÑполÑзоваÑÑ Ð¾Ð±ÑекÑÑ ÑÑ
емÑ, Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð½Ð°Ð´Ð¾Ð±Ð¸ÑÑÑÑ Ð½Ð°Ð·Ð½Ð°ÑиÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе пÑава на ÑÑовне обÑекÑов.
ÐолÑзоваÑÐµÐ»Ñ Ñакже можно ÑазÑеÑиÑÑ ÑоздаваÑÑ Ð¾Ð±ÑекÑÑ Ð² ÑÑ
еме, не пÑинадлежаÑей емÑ. ÐÐ»Ñ ÑÑого ÐµÐ¼Ñ Ð½Ñжно даÑÑ Ð¿Ñаво CREATE в ÑÑебÑемой ÑÑ
еме. РбазаÑ
даннÑÑ
, обновлÑннÑÑ
Ñ PostgreSQL 14 или более Ñанней веÑÑии, вÑе имеÑÑ ÑÑо пÑаво в ÑÑ
еме public. ÐекоÑоÑÑе ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑебÑÑÑ Ð·Ð°Ð¿ÑеÑиÑÑ ÑÑо:
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
(ÐеÑвое Ñлово «public» обознаÑÐ°ÐµÑ ÑÑ ÐµÐ¼Ñ, а вÑоÑое ознаÑÐ°ÐµÑ Â«ÐºÐ°Ð¶Ð´Ñй полÑзоваÑелÑ». РпеÑвом ÑлÑÑае ÑÑо иденÑиÑикаÑоÑ, а во вÑоÑом â клÑÑевое Ñлово, поÑÑÐ¾Ð¼Ñ Ð¾Ð½Ð¸ напиÑÐ°Ð½Ñ Ð² Ñазном ÑегиÑÑÑе; вÑпомниÑе ÑÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¸Ð· ÐодÑаздела 4.1.1.)
5.10.5. Ð¡Ñ ÐµÐ¼Ð° ÑиÑÑемного каÑалога #
Рдополнение к ÑÑ
еме public и ÑÑ
емам, ÑоздаваемÑм полÑзоваÑелÑми, лÑÐ±Ð°Ñ Ð±Ð°Ð·Ð° даннÑÑ
ÑодеÑÐ¶Ð¸Ñ ÑÑ
ÐµÐ¼Ñ pg_catalog, в коÑоÑой наÑ
одÑÑÑÑ ÑиÑÑемнÑе ÑаблиÑÑ Ð¸ вÑе вÑÑÑоеннÑе ÑÐ¸Ð¿Ñ Ð´Ð°Ð½Ð½ÑÑ
, ÑÑнкÑии и опеÑаÑоÑÑ. pg_catalog ÑакÑиÑеÑки вÑегда ÑвлÑеÑÑÑ ÑаÑÑÑÑ Ð¿ÑÑи поиÑка. ÐÑли даже ÑÑа ÑÑ
ема не добавлена в пÑÑÑ Ñвно, она неÑвно пÑоÑмаÑÑиваеÑÑÑ Ð´Ð¾ вÑеÑ
ÑÑ
ем, ÑказаннÑÑ
в пÑÑи. Так обеÑпеÑиваеÑÑÑ Ð´Ð¾ÑÑÑпноÑÑÑ Ð²ÑÑÑоеннÑÑ
имÑн пÑи лÑбÑÑ
ÑÑловиÑÑ
. Ðднако Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑвнÑм обÑазом помеÑÑиÑÑ pg_catalog в ÐºÐ¾Ð½ÐµÑ Ð¿ÑÑи поиÑка, еÑли вам нÑжно, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑкие имена пеÑеопÑеделÑли вÑÑÑоеннÑе.
Так как имена ÑиÑÑемнÑÑ
ÑÐ°Ð±Ð»Ð¸Ñ Ð½Ð°ÑинаÑÑÑÑ Ñ pg_, Ñакие имена лÑÑÑе не иÑполÑзоваÑÑ Ð²Ð¾ избежание конÑликÑа имÑн, возможного пÑи поÑвлении в бÑдÑÑем ÑиÑÑемной ÑаблиÑÑ Ñ Ñем же именем, ÑÑо и ваÑа. (С пÑÑÑм поиÑка по ÑмолÑÐ°Ð½Ð¸Ñ Ð½ÐµÐ¿Ð¾Ð»Ð½Ð°Ñ ÑÑÑлка бÑÐ´ÐµÑ Ð²Ð¾ÑпÑинÑÑа как обÑаÑение к ÑиÑÑемной ÑаблиÑе.) СиÑÑемнÑе ÑаблиÑÑ Ð±ÑдÑÑ Ð¸ далÑÑе ÑодеÑжаÑÑ Ð² имени пÑиÑÑÐ°Ð²ÐºÑ pg_, Ñак ÑÑо они не бÑдÑÑ ÐºÐ¾Ð½ÑликÑоваÑÑ Ñ Ð½ÐµÐ¿Ð¾Ð»Ð½Ñми именами полÑзоваÑелÑÑкиÑ
ÑаблиÑ, еÑли полÑзоваÑели Ñо Ñвоей ÑÑоÑÐ¾Ð½Ñ Ð½Ðµ бÑдÑÑ Ð¸ÑполÑзоваÑÑ Ð¿ÑиÑÑÐ°Ð²ÐºÑ pg_.
5.10.6. Ð¨Ð°Ð±Ð»Ð¾Ð½Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ #
СÑ
емам можно найÑи множеÑÑво пÑименений. ÐÐ»Ñ Ð·Ð°ÑиÑÑ Ð¾Ñ Ð²Ð»Ð¸ÑÐ½Ð¸Ñ Ð½ÐµÐ´Ð¾Ð²ÐµÑеннÑÑ
полÑзоваÑелей на поведение запÑоÑов дÑÑгиÑ
полÑзоваÑелей пÑедлагаеÑÑÑ Ñаблон безопаÑного иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑ
ем, но еÑли ÑÑÐ¾Ñ Ñаблон не пÑименÑеÑÑÑ Ð² базе даннÑÑ
, полÑзоваÑели, желаÑÑие безопаÑно вÑполнÑÑÑ Ð² ней запÑоÑÑ, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑдÑÑ Ð¿ÑинимаÑÑ Ð·Ð°ÑиÑнÑе меÑÑ Ð² наÑале каждого ÑеанÑа. Ð ÑаÑÑноÑÑи, они Ð´Ð¾Ð»Ð¶Ð½Ñ Ð½Ð°ÑинаÑÑ ÐºÐ°Ð¶Ð´Ñй ÑÐµÐ°Ð½Ñ Ñ Ð¿ÑиÑÐ²Ð°Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿ÑÑÑого знаÑÐµÐ½Ð¸Ñ Ð¿ÐµÑеменной search_path или каким-либо дÑÑгим обÑазом ÑдалÑÑÑ Ð¸Ð· search_path ÑÑ
емÑ, доÑÑÑпнÑе Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи обÑÑнÑм полÑзоваÑелÑм. С конÑигÑÑаÑией по ÑмолÑÐ°Ð½Ð¸Ñ Ð»ÐµÐ³ÐºÐ¾ ÑеализÑÑÑÑÑ ÑледÑÑÑие ÑÐ°Ð±Ð»Ð¾Ð½Ñ Ð¸ÑполÑзованиÑ:
ÐгÑаниÑиÑÑ Ð¾Ð±ÑÑнÑÑ Ð¿Ð¾Ð»ÑзоваÑелей лиÑнÑми ÑÑ ÐµÐ¼Ð°Ð¼Ð¸. ÐÐ»Ñ ÑеализаÑии ÑÑого Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð° ÑнаÑала ÑбедиÑеÑÑ, ÑÑо ни Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑ ÐµÐ¼Ñ Ð½ÐµÑ Ð¿Ñава
CREATE. ÐаÑем Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ полÑзоваÑелÑ, коÑоÑÑй бÑÐ´ÐµÑ ÑоздаваÑÑ Ð½Ðµ вÑеменнÑе обÑекÑÑ, ÑоздайÑе ÑÑ ÐµÐ¼Ñ Ñ ÐµÐ³Ð¾ именем, напÑимеÑCREATE SCHEMA alice AUTHORIZATION alice. (Ðак Ð²Ñ Ð·Ð½Ð°ÐµÑе, пÑÑÑ Ð¿Ð¾Ð¸Ñка по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ð°ÑинаеÑÑÑ Ñ Ð¸Ð¼ÐµÐ½Ð¸$user, вмеÑÑо коÑоÑого подÑÑавлÑеÑÑÑ Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑ. Таким обÑазом, еÑли Ñ Ð²ÑÐµÑ Ð¿Ð¾Ð»ÑзоваÑелей бÑÐ´ÐµÑ Ð¾ÑделÑÐ½Ð°Ñ ÑÑ ÐµÐ¼Ð°, они по ÑмолÑÐ°Ð½Ð¸Ñ Ð±ÑдÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº ÑобÑÑвеннÑм ÑÑ ÐµÐ¼Ð°Ð¼.) ÐÑÐ¾Ñ Ñаблон позволÑÐµÑ Ð±ÐµÐ·Ð¾Ð¿Ð°Ñно иÑполÑзоваÑÑ ÑÑ ÐµÐ¼Ñ, ÑолÑко еÑли никакой недовеÑеннÑй полÑзоваÑÐµÐ»Ñ Ð½Ðµ ÑвлÑеÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ не полÑÑал пÑавоADMIN OPTIONÐ´Ð»Ñ ÑооÑвеÑÑÑвÑÑÑей Ñоли. РпÑоÑивном ÑлÑÑае безопаÑное иÑполÑзование ÑÑ ÐµÐ¼ невозможно.Ð PostgreSQL 15 и вÑÑе ÑÑÐ¾Ñ Ð¿Ð¾Ð´Ñ Ð¾Ð´ иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð´Ð´ÐµÑживаеÑÑÑ ÐºÐ¾Ð½ÑигÑÑаÑией по ÑмолÑаниÑ. РпÑедÑдÑÑÐ¸Ñ Ð²ÐµÑÑиÑÑ Ð¸Ð»Ð¸ пÑи иÑполÑзовании Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ , обновлÑнной Ñ Ð¿ÑедÑдÑÑей веÑÑии, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑдалиÑÑ Ð¿Ñаво
CREATEиз ÑÑ ÐµÐ¼Ñpublic(вÑполниÑÑREVOKE CREATE ON SCHEMA public FROM PUBLIC). ÐаÑем пÑовеÑÑÑе, Ð½ÐµÑ Ð»Ð¸ в ÑÑ ÐµÐ¼ÐµpublicобÑекÑов Ñ Ñакими же именами, как Ñ Ð¾Ð±ÑекÑов в ÑÑ ÐµÐ¼Ðµpg_catalog.УдалиÑÑ ÑÑ ÐµÐ¼Ñ public из пÑÑи поиÑка по ÑмолÑаниÑ, изменив
postgresql.confили вÑполнив командÑALTER ROLE ALL SET search_path = "$user". ÐаÑем ÑледÑÐµÑ Ð¿ÑедоÑÑавиÑÑ Ð¿Ñава на Ñоздание обÑекÑов в ÑÑ ÐµÐ¼Ðµ public. ÐÑбиÑаÑÑÑÑ Ð¾Ð±ÑекÑÑ Ð² ÑÑой ÑÑ ÐµÐ¼Ðµ бÑдÑÑ ÑолÑко по Ð¿Ð¾Ð»Ð½Ð¾Ð¼Ñ Ð¸Ð¼ÐµÐ½Ð¸. Тогда как обÑаÑаÑÑÑÑ Ðº ÑаблиÑам по Ð¿Ð¾Ð»Ð½Ð¾Ð¼Ñ Ð¸Ð¼ÐµÐ½Ð¸ вполне допÑÑÑимо, обÑаÑÐµÐ½Ð¸Ñ Ðº ÑÑнкÑиÑм в обÑей ÑÑ ÐµÐ¼Ðµ вÑÑ Ð¶Ðµ бÑдÑÑ Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°ÑнÑми или ненадÑжнÑми. ÐоÑÑÐ¾Ð¼Ñ ÐµÑли Ð²Ñ ÑоздаÑÑе ÑÑнкÑии или ÑаÑÑиÑÐµÐ½Ð¸Ñ Ð² ÑÑ ÐµÐ¼Ðµ public, пÑименÑйÑе пеÑвÑй Ñаблон. ÐÑли же неÑ, ÑÑÐ¾Ñ Ñаблон, как и пеÑвÑй, безопаÑен пÑи ÑÑловии, ÑÑо никакой недовеÑеннÑй полÑзоваÑÐµÐ»Ñ Ð½Ðµ ÑвлÑеÑÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑем Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¸ не полÑÑал пÑавоADMIN OPTIONÐ´Ð»Ñ ÑооÑвеÑÑÑвÑÑÑей Ñоли.Ð¡Ð¾Ñ ÑаниÑÑ Ð¿ÑÑÑ Ð¿Ð¾Ð¸Ñка по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ пÑедоÑÑавиÑÑ Ð¿Ñава ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¾Ð±ÑекÑов в ÑÑ ÐµÐ¼Ðµ public. ÐÑе полÑзоваÑели неÑвно обÑаÑаÑÑÑÑ Ðº ÑÑ ÐµÐ¼Ðµ public. Тем ÑамÑм имиÑиÑÑеÑÑÑ ÑиÑÑаÑÐ¸Ñ Ñ Ð¿Ð¾Ð»Ð½Ñм оÑÑÑÑÑÑвием ÑÑ ÐµÐ¼, ÑÑо позволÑÐµÑ Ð¾ÑÑÑеÑÑвиÑÑ Ð¿Ð»Ð°Ð²Ð½Ñй пеÑÐµÑ Ð¾Ð´ из ÑÑÐµÐ´Ñ Ð±ÐµÐ· ÑÑ ÐµÐ¼. Ðднако даннÑй Ñаблон ни в коем ÑлÑÑае нелÑÐ·Ñ ÑÑиÑаÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑм. Ðн Ð¿Ð¾Ð´Ñ Ð¾Ð´Ð¸Ñ, ÑолÑко еÑли в базе даннÑÑ Ð¸Ð¼ÐµÐµÑÑÑ Ð²Ñего один либо неÑколÑко довеÑÑÑÑÐ¸Ñ Ð´ÑÑг дÑÑÐ³Ñ Ð¿Ð¾Ð»ÑзоваÑелей. Ð Ð±Ð°Ð·Ð°Ñ Ð´Ð°Ð½Ð½ÑÑ , обновлÑннÑÑ Ñ Ð²ÐµÑÑии PostgreSQL 14 или более Ñанней, ÑÑÐ¾Ñ Ñаблон пÑименÑеÑÑÑ Ð¿Ð¾ ÑмолÑаниÑ.
ÐÑи лÑбом Ð¿Ð¾Ð´Ñ Ð¾Ð´Ðµ, ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°Ñ ÑовмеÑÑно иÑполÑзÑемÑе пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ (ÑаблиÑÑ, коÑоÑÑе нÑÐ¶Ð½Ñ Ð²Ñем, дополниÑелÑнÑе ÑÑнкÑии ÑÑоÑÐ¾Ð½Ð½Ð¸Ñ ÑазÑабоÑÑиков и Ñ. д.), помеÑайÑе Ð¸Ñ Ð² оÑделÑнÑе ÑÑ ÐµÐ¼Ñ. Ðе забÑдÑÑе даÑÑ Ð´ÑÑгим полÑзоваÑелÑм пÑава Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÑÑим ÑÑ ÐµÐ¼Ð°Ð¼. Тогда полÑзоваÑели ÑмогÑÑ Ð¾Ð±ÑаÑаÑÑÑÑ Ðº ÑÑим дополниÑелÑнÑм обÑекÑам по Ð¿Ð¾Ð»Ð½Ð¾Ð¼Ñ Ð¸Ð¼ÐµÐ½Ð¸ или пÑи желании добавÑÑ ÑÑи ÑÑ ÐµÐ¼Ñ Ð² Ñвои пÑÑи поиÑка.
5.10.7. ÐеÑеноÑимоÑÑÑ #
СÑандаÑÑ SQL не поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð¾Ð±ÑаÑение в одной ÑÑ
еме к ÑазнÑм обÑекÑам, пÑинадлежаÑим ÑазнÑм полÑзоваÑелÑм. Ðолее Ñого, в ÑÑде ÑеализаÑий СУÐРнелÑÐ·Ñ ÑоздаваÑÑ ÑÑ
ÐµÐ¼Ñ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼, оÑлиÑнÑм Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ владелÑÑа. Ðа пÑакÑике, в СУÐÐ, ÑеализÑÑÑиÑ
ÑолÑко базовÑÑ Ð¿Ð¾Ð´Ð´ÐµÑÐ¶ÐºÑ ÑÑ
ем ÑоглаÑно ÑÑандаÑÑÑ, конÑепÑии полÑзоваÑÐµÐ»Ñ Ð¸ ÑÑ
ÐµÐ¼Ñ Ð¾ÑÐµÐ½Ñ Ð±Ð»Ð¸Ð·ÐºÐ¸. Таким обÑазом, многие полÑзоваÑели полагаÑÑ, ÑÑо полное Ð¸Ð¼Ñ Ð½Ð° Ñамом деле обÑазÑеÑÑÑ ÐºÐ°Ðº . Рименно Ñак бÑÐ´ÐµÑ Ð²ÐµÑÑи ÑÐµÐ±Ñ PostgreSQL, еÑли Ð²Ñ ÑоздадиÑе ÑÑ
ÐµÐ¼Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ полÑзоваÑелÑ.имÑ_полÑзоваÑелÑ.имÑ_ÑаблиÑÑ
Ð ÑÑандаÑÑе SQL Ð½ÐµÑ Ð¸ понÑÑÐ¸Ñ ÑÑ
ÐµÐ¼Ñ public. ÐÐ»Ñ Ð¼Ð°ÐºÑималÑного ÑооÑвеÑÑÑÐ²Ð¸Ñ ÑÑандаÑÑÑ Ð¸ÑполÑзоваÑÑ ÑÑ
ÐµÐ¼Ñ public не ÑледÑеÑ.
ÐонеÑно, еÑÑÑ Ð¡Ð£ÐÐ, в коÑоÑÑÑ Ð²Ð¾Ð¾Ð±Ñе не ÑÐµÐ°Ð»Ð¸Ð·Ð¾Ð²Ð°Ð½Ñ ÑÑ ÐµÐ¼Ñ Ð¸Ð»Ð¸ пÑоÑÑÑанÑÑва имÑн поддеÑживаÑÑ (возможно, Ñ Ð¾Ð³ÑаниÑениÑми) обÑаÑÐµÐ½Ð¸Ñ Ðº дÑÑгим базам даннÑÑ . ÐÑли вам поÑÑебÑеÑÑÑ ÑабоÑаÑÑ Ñ ÑÑими ÑиÑÑемами, макÑималÑной пеÑеноÑимоÑÑи Ð²Ñ Ð´Ð¾ÑÑигнеÑе, вообÑе не иÑполÑзÑÑ ÑÑ ÐµÐ¼Ñ.