|
|
|
Правила именования объектов базы данных
|
|||
|---|---|---|---|
|
#18+
статей на данную тематику достаточно много, но все же хотелось бы акцентировать внимания только на проверенных жизнью и реальными рабочими БД (Oracle). Посоветуйте подход наименования объектов и разделения их по схемам, при : - Достаточно большой бьем таблиц, используемых при построение запросов. (первоначально неизвестно их переплетение и невозможно предвидеть их взаимосвязь) Какими принципами руководствоваться при размещении их в 1 или в разных схемах? - Разделение пользователей (более 1000 ) по правом происходит путем формирования роли (Орокловой) и присваивании пользователю (Для каждого пользователя (человека) создается свой пользователь (в орокле) который получает синонимы на объекты. Возникает колизия имен, когда есть необходимость дать права на таблицу "user" в схеме "А" и на таблицу стемже самым названием в схеме "В" ). Какими принципами руководствоваться при именовании таблиц? - Какими принципами руководствоваться при именовании служебных объектов (процедур, триггеров .....) ? - Какими принципами руководствоваться при именовании столбцов(в том числе и PK, FK)? - Отдельно интересна реализация триггеров (по одному типу триггеров на таблицу (after/befor/insted) или множество разделенных по смысловым действиям ) Вообще вопросов по данной теме очень много так как впервые столкнулся с горой мусора в бд, которую никто не одменистрит и нет вообще никаких правил в организации, а работать с этой горой непонятно чего необходимо. Заранее признателен за информативную беседу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2008, 16:29 |
|
||
|
Правила именования объектов базы данных
|
|||
|---|---|---|---|
|
#18+
незнайка... - Достаточно большой бьем таблиц, используемых при построение запросов. (первоначально неизвестно их переплетение и невозможно предвидеть их взаимосвязь) Какими принципами руководствоваться при размещении их в 1 или в разных схемах? "первоначально" - это когда? Ораклы для построения своих приложений выбрали правило - на каждое приложение - своя схема. Общесистемные таблицы - тоже принадлежат какой-то схеме, читай - приложению. Далее, объекты (таблицы, пакеты, процедуры, ...) одной схемы всегда в своем названии должны содержать префикс - аббревиатуру приложения. Таким образом, путаницы с именованием объектов не происходит. Кроме того, название объекта содержит и постфикс, содержащий аббривеатуру типа объекта, например, _T - для таблиц, _V - для вьюх и т.д. Однако особенность: при максимальной длине названия, например таблицы, в 32 символа на логическое название остается все меньше и меньше места. Можете взять на вооружение либо сделать свой вариант на подобие. незнайка... - Разделение пользователей (более 1000 ) по правом происходит путем формирования роли (Орокловой) и присваивании пользователю (Для каждого пользователя (человека) создается свой пользователь (в орокле) который получает синонимы на объекты. Возникает колизия имен, когда есть необходимость дать права на таблицу "user" в схеме "А" и на таблицу стемже самым названием в схеме "В" ). Вы, случайно, не паблик синонимы на объекты даете? В промышленной БД паблик синонимы давать очччень не рекомендуется. Давайте обычные и проблем с именованием не будет. Или все-таки будет??? Есть таблицы с одинаковыми именами в разных схемах и нужен к ним доступ??? Все-равно. Давайте им синонимы с разными именами или используйте именование как указано выше незнайка... - Какими принципами руководствоваться при именовании столбцов(в том числе и PK, FK)? Я при разработке названия таблицам даю такое: XXX_Y_TT..TTs, где XXX - аббревиатура приложения, Y - символ, обозначающий что это такое, например, справочник, лог, рабочие данные и др.(мне так удобнее + привычка), TT..TT - название объектов, которые хранятся в таблице, s - а-ля множественное число для объектов. Пример: SYS_S_USERS - справочник пользователей. Для именования PK и FK: всегда делаю один суррогатный PK, именуется он по имени одного объекта, т.е. одной строки, с добавленным _ID. В примере: USER_ID FK обычно равны PK таблицы, из которой берется. Например, в таблице пользовательских прав, содержится FK на таблицу пользователей. Назваться он будет также: USER_ID Исключений только два: 1) "свинное ухо" - таблица имеет FK на себя - обычно FK именуется, например, как PARENT_USER_ID - FK на USER_ID. 2) Таблица имеет 2 FK на одну таблицу - тогда тоже некая логическая вставка в название FK, э... например, таблица подчиненности пользователей (m:m): BOSS_USER_ID и WORKER_USER_ID (пример - не очень, но чтобы показать именование). незнайка... - Отдельно интересна реализация триггеров (по одному типу триггеров на таблицу (after/befor/insted) или множество разделенных по смысловым действиям ) У меня триггера называются по имени таблицы со сложным постфиксом _tri_XYYY, где X = A или B (AFTER, BEFORE), YYY = I, U, D или их комбинация. Соглашусь, что эnо не лучшая схема именования, т.к. не отражает логику, т.е. что конкретно делает триггер. Может кто предложит что-то лучшее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 08:43 |
|
||
|
Правила именования объектов базы данных
|
|||
|---|---|---|---|
|
#18+
Куча схем создаёт больше проблем чем их решает, так что при разработке системы постарайтесь обойтись одной схемой. Создавать публичные синонимы сейчас нет большого смысла, потому как Оракл уже поддерживает разделение понятия пользователя и схемы. Теперь пользователь может работать в контексте чужой схемы со своими привилегиями. Создавать учётные записи 1:1 с человеком нет нужды. Для работы с разными приложениями один человек может иметь разные учётные записи. Ещё хочу заметить, что для разных систем скорее всего потребуется выделить разные узлы для развёртывания разных СУБД и БД, иначе разработчик не сможет гарантировать соответствие показателей производительности системы её проектным значениям. Принципы именования могут быть любыми, важно чтобы их было не много, и чтобы они были простыми и понятными, иначе ими не будут пользоваться. В некоторых случаях оракл забивает для себя имена, так чтобы разработчики случайно не пересеклись. Это надо учесть в процессе разработки стандарта. Ну и время от времени нужно проводить инспекцию БД, и исправлять выявленные нарушения стандарта. Обвешивать имена таблиц префиксами и суффиксами я не вижу смысла. Имена таблиц очень часто и широко используются, и писать лишние буквы со временем утомляет. Тип объекта по началу легко узнать в словаре БД, а со временем ты и так его запомнишь. К именам представлений и синонимов можно прицеплять префиксы и суфиксы, чтобы определить для каких внешних модулей они предназначены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2008, 14:36 |
|
||
|
|

start [/forum/topic.php?fid=32&tid=1543526]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
214ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 562ms |

| 0 / 0 |
