Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
дядь Роб
Member

Откуда: Казань->Прага
Сообщений: 55
Привет Всем !

Вопрос такой.
насколько это моветон, использовать в имени таблицы символ $.
Oracle ведь использует такой подход, для своих глубоко системных таблиц.

Знак подчеркивания использовать принципиально нехочу, ибо он будет использоваться как разделитель для таблиц с составным именем (Пример: BM$BALANCE_GROUPS).


P.S.
Использовать префиксы таблиц или нет - вопрос филосовский, на него ответ даже не нужен.


Надпись на бампере: Обгоняй. Кому то нужны твои почки.
2 фев 07, 19:19    [3733984]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Мне больше # нравится..
2 фев 07, 19:24    [3734001]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
дядь Роб
Member

Откуда: Казань->Прага
Сообщений: 55
orawish
Мне больше # нравится..


Мне уже тоже :) спасибо
2 фев 07, 19:44    [3734035]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
Scott Tiger
Member

Откуда: вмваре
Сообщений: 6876
дядь Роб
orawish
Мне больше # нравится..


Мне уже тоже :) спасибо


В юниксовых скриптах такие вещи придётся эскейпить, что не есть удобно.
2 фев 07, 19:49    [3734040]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
дядь Роб
Member

Откуда: Казань->Прага
Сообщений: 55
Scott Tiger
дядь Роб
orawish
Мне больше # нравится..


Мне уже тоже :) спасибо


В юниксовых скриптах такие вещи придётся эскейпить, что не есть удобно.


Именно решетку?
2 фев 07, 20:22    [3734112]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 64002
Блог
дядь Роб
(Пример: BM$BALANCE_GROUPS).

Лично я именно так и поступаю, считаю удобным и правильным, на проблемы или возмущение других разработчиков не натыкался. Знак # не использую, считаю зарезервированным для будущих потребностей такого рода.
2 фев 07, 20:22    [3734116]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
дядь Роб
Member

Откуда: Казань->Прага
Сообщений: 55
softwarer
дядь Роб
(Пример: BM$BALANCE_GROUPS).

Лично я именно так и поступаю, считаю удобным и правильным, на проблемы или возмущение других разработчиков не натыкался. Знак # не использую, считаю зарезервированным для будущих потребностей такого рода.


Понял.
Спасибо.
Решения то я уже принял - использовать надо/можно. Но решил у общественности поинтересоваться. Засада в том, что чем больше знаешь - тем больше сомневаешься.
Были ведь времена - клепали системы и были уверены то "что это именно так и надо" :)
Блин
2 фев 07, 20:28    [3734124]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 64002
Блог
дядь Роб
Но решил у общественности поинтересоваться. Засада в том, что чем больше знаешь - тем больше сомневаешься.

Имхо абсолютно верный подход.

дядь Роб
Были ведь времена - клепали системы и были уверены то "что это именно так и надо" :)

Угу. Скажу так, подобные префиксы я использую года с двухтысячного - точнее, не только я, а тогдашний коллектив - и до сих пор именно что не видел и не слышал ничего плохого. Так что полагаю достаточно безопасным, чтобы пользоваться удобствами.
2 фев 07, 20:35    [3734134]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
дядь Роб
Member

Откуда: Казань->Прага
Сообщений: 55
softwarer
[quot дядь Роб]Угу. Скажу так, подобные префиксы я использую года с двухтысячного - точнее, не только я, а тогдашний коллектив - и до сих пор именно что не видел и не слышал ничего плохого. Так что полагаю достаточно безопасным, чтобы пользоваться удобствами.


Я эти префиксы использовал, давно с подачи нашего Oracle гуру. Типа в Oracle CDM были прописаны правила именования объектов - и типа так и надо. Особенно если объекты отвечают за различную функциональность но находятся в одной схеме.

Но времена меняются, системы становятся больше. Надо разносить по схемам.
В итоге идея такова: именовать объекты в схеме с префиксом: BM$BALANCE_GROUPS
Для каждого объекта создавать паблис синоним: BM_BALANCE_GROUPS.

Все разработчики, понятное дело должны оперировать только с наименованиями синонимов.
2 фев 07, 20:45    [3734154]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 64002
Блог
Хм. Мне кажется, то, что Вы говорите, есть приглашение к большому и серьезному обсуждению. К сожалению, не уверен, что смогу в нем поучаствовать, но тема важная.

В первую очередь, я бы всерьез подумал, а стоит ли разносить приложение по схемам. Пока таблиц не десять тысяч.... всерьез бы подумал. Это добавляет хлопот, и адекватных средств для работы в таком режиме скорее нет.

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

Наконец, в последние годы мне не нравится идея синонимов. Паблик синонимы применимы, если мы говорим о внутренней автоматизации или о продуктах класса OEBS, когда есть уверенность в том, что не будет желания поставить на тот же инстанс базу другого приложения. Ну а идея создавать по десять тысяч синонимов в схеме каждого из десяти тысяч пользователей представляется мне еще более неудачной.

У себя я пока обхожусь одной схемой, причем клиентские компоненты подставляют ее имя в SQL-и, соответственно, я легко могу поставить приложение в схему, имя которой задает пользователь, и так работать. При нескольких схемах клиенту ничуть не поплохеет, но будет проблема с межсхемными обращениями в серверном коде. Кроме того, при одной схеме я полагаю правильным использовать alter session set current_schema, это для клиентов, не способных легко и просто подставлять имя схемы так, как у меня. Для себя я думаю, не перейти ли на этот способ, но пока и реализованное не вызывает претензий.

Наконец, мне не нравится идея "имя синонима отличается от имени объекта, на который он ссылается". Учитывая, что разработчики работают только с синонимами (в которых Вы используете подчеркивание), не вижу смысла именовать таблицы как-то иначе.
2 фев 07, 21:02    [3734176]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
дядь Роб
Member

Откуда: Казань->Прага
Сообщений: 55
softwarer
Хм. Мне кажется, то, что Вы говорите, есть приглашение к большому и серьезному обсуждению. К сожалению, не уверен, что смогу в нем поучаствовать, но тема важная.

Тема действительно важная, одним из важных критериев является для меня, является оценка построения БД заказчиком - из-за доступности просмотра/анализа структуры БД. Не говоря о том, что хочется дополнительную степень свободы .
автор
В первую очередь, я бы всерьез подумал, а стоит ли разносить приложение по схемам. Пока таблиц не десять тысяч.... всерьез бы подумал. Это добавляет хлопот, и адекватных средств для работы в таком режиме скорее нет.

В существующей версии системы таблиц > 1000. В новой будет ~2 тысяч.
автор
Далее, мне не нравится идея использовать разнесение по схемам и префиксы одновременно - точнее, я полагаю, что тут подразумевается и неизбежно дублирование, например префиксом будет имя схемы же. Если есть четкое понимание "для чего нужны схемы и какие префиксы внутри них что будут означать" - надо обдумать, возможно и уместно.

Имя схемы выбирается на основании аббревиатуры наименования подсистемы (не больше 4 букв).
Каждая подсистема разрабатывается как черный ящик. У каждой подсистемы своя группа разработчиков. Префиксы на самом деле планировалось сделать таким образом - таблица в схеме (BM) TBL$BALANCE_GROUPS + public synonym BM_BALANCE_GROUPS.
автор
Наконец, в последние годы мне не нравится идея синонимов. Паблик синонимы применимы, если мы говорим о внутренней автоматизации или о продуктах класса OEBS, когда есть уверенность в том, что не будет желания поставить на тот же инстанс базу другого приложения. Ну а идея создавать по десять тысяч синонимов в схеме каждого из десяти тысяч пользователей представляется мне еще более неудачной.

Речь идет только об public синонимах, причем инстанс будет обслуживать только эту систему. Исходные требования. Критичность с точки зрения бизнеса позволяет нам выставлять такие требования для заказчика - и они соглашаются.

автор
Кроме того, при одной схеме я полагаю правильным использовать alter session set current_schema, это для клиентов, не способных легко и просто подставлять имя схемы так, как у меня.

Так реализовано в текущей версии - да, действительно. Работает.

автор
Наконец, мне не нравится идея "имя синонима отличается от имени объекта, на который он ссылается". Учитывая, что разработчики работают только с синонимами (в которых Вы используете подчеркивание), не вижу смысла именовать таблицы как-то иначе.

Если же рассмотреть разработчиков из других групп. Которые "живут" в других схемах.
Вообще идея обязательного наличия синонимов для каждого объекта, в частности рождалась из-за желания, в случае необходимости:
а) обращаться прозрачно по dblink-у на другой сервер - где и будет храниться исходный объект
б) если одна из подсистем не поставляется и приходится интегрироваться с существующей - то путем создания оберток (VIEW, MVW) можно добиться статичности кода доступа.

согласен- что пункты а и б, очень тесно переплетаются с созданием бизнес-слоя и т.д. Но к сожалению существующие клиенты избалованы хорошо документированной схемой БД, откуда при желании можно достать любые данные в любом разрезе. И все замыкать на уровне API не хотелось бы.
2 фев 07, 21:24    [3734222]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 64002
Блог
дядь Роб
В существующей версии системы таблиц > 1000. В новой будет ~2 тысяч.

Полторы тысячи таблиц в одной схеме меня не напрягали. Точнее, куда больше напрягла коллизия, вызванная тем, что на некоторых серверах когда-то давно сделали "дублирующую" схему и часть синонимов была направлена туда.

дядь Роб
Каждая подсистема разрабатывается как черный ящик. У каждой подсистемы своя группа разработчиков.

Тогда разбиение по схемам, конечно, приобретает смысл.

дядь Роб
Префиксы на самом деле планировалось сделать таким образом - таблица в схеме (BM) TBL$BALANCE_GROUPS + public synonym BM_BALANCE_GROUPS.

Хм. В данном случае я совершенно не понимаю, кому нужен префикс TBL$. Во-первых, такие суперуниверсальные префиксы вообще подозрительны, но имхо более важно что: если все пользуются синонимами, префикс никто никогда не будет указывать, он излишен.

дядь Роб
б) если одна из подсистем не поставляется и приходится интегрироваться с существующей - то путем создания оберток (VIEW, MVW) можно добиться статичности кода доступа.

Для интеграции имхо в любом случае стоит выделять специальные объекты. Отделить "родные объекты системы" от "объекты системы, специально предназначенные для корректировки в целях интеграции".

дядь Роб
Но к сожалению существующие клиенты избалованы хорошо документированной схемой БД, откуда при желании можно достать любые данные в любом разрезе.

Тут я их понимаю и с ними согласен.
4 фев 07, 11:01    [3736140]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
Nike_K
Member

Откуда:
Сообщений: 144
Oracle Method Standard (ICCM.DB.010 - Logical Database Design)
OMS-61600: Only use alphanumeric characters and '_' in column names.
Rationale Names of objects in the Oracle Server can contain only alphanumeric characters from the database character set and the characters _, $, and #. Use of $ and # can lead to interpretation conflicts when using certain tools to access the data.
4 фев 07, 21:10    [3736923]     Ответить | Цитировать Сообщить модератору
 Re: ? давать имена объектам с символом $ в имени: BM$BALANCES  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Scott Tiger
..В юниксовых скриптах такие вещи придётся эскейпить, что не есть удобно.

+1
Я, на стороне клиента, ~ 95% на тикле самовыражаюсь (которому, знамо, и $ и # - тоже не чужие). Об доллар - спотыкался (иногда и несильно:), об решетку - вроде, ни разу
А уйти .. ну, куда от $ денешся, когда у оракла он в ходу?
5 фев 07, 12:31    [3738854]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить