powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / именование колонок
16 сообщений из 16, страница 1 из 1
именование колонок
    #36192476
bublikom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кто подскажет, как именовать внешний ключ (особенно, в ситуации, если их два на одну таблицу)?

Сейчас имеем префексирование:
Есть таблица: InternetHost: ihId pk
Есть таблица: OnlineOrder с ключами на пользователя и ресурс-источник в InternetHost

Сейчас это называется ooUser_ihId ooSite_ihId - префиксы указывают, что эти поля внешние на таблицу InternetHost.

Думаю, от префексирования будем уходить. Будем использовать схему OrderInfo, таблицу назовём Data.

Подскажите, мб есть какието доки по стилям именования или как нам именовать поля-внешние ключи в этой ситуации.

Заранее, спасибо за участвие)

p.s. это в продолжение темы про схемы

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
именование колонок
    #36192513
bublikom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на данный момент, лучшее что придумал - HostId_User, HostId_Site (таблица будет называться Host в схеме OnlineOrder, PK = Host.Id)
...
Рейтинг: 0 / 0
именование колонок
    #36192552
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bublikom,
я стараюсь именовать примерно так...
к примеру есть "сущности" user, host, online_user...
когда делаю таблицу для неё, добавляю _list - потом в коде, для меня это маркер что это именно таблица
то есть user_list, host_list, online_user_list...
если через PK на эту таблицу будут ссылаться, то соответствненно user_id, host_id...
online_user_id - довольно длинно, и я назвал бы ou_id или ouser_id
если PK больше нигде не нужен, то его просто называю id

и заглавных букв не использую )
...
Рейтинг: 0 / 0
именование колонок
    #36192561
bublikom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кифирчик, предложенные вами правила мне кажутся не рациональными. префиксы уйдут обсуждение тут .

насчет подчеркиваний: я против - можно заглавными/прописными ограничиться, это лишний символ.

понятно, что если я назову колонку Id, в коде я не найду (точнее, могу упустить) где используется Id таблицы OnlineOrder.Data. я думаю это не критично, в этом случае по имени таблицы можно сделать поиск и уже провести анализ.
...
Рейтинг: 0 / 0
именование колонок
    #36192610
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bublikom, почитал ваш топик... понятно что вам не нравится...
вы хотите чтоб ваши таблицы как-то логически группировались в списке.. в EMS есть такая возможность.. .делать "папки" и там группировать что и как хотите...
либо приставку в виде одной буквы... сейчас как раз буду одну базку "реструктурировать", и таблички уже так обозвал, с приставкой... очень даже ничего в списке объектов всё по группам...

"поддчеркивания/заглавных букв"... ИМХО нерационально заморачиваться, что длинна названия таблицы была 33, а стала 37 символов... и Id <> ld ... латинские i и L очень похожи...
я так понял у вас несколько человек работают на проектом... так вот кто-то будет добросовестно писать GeoData... а кто-то раз нечайно напишет Geodata... ой каша потом будет...

а потом будет весело, когда привыкнешь выделять слова заглавными буквами... и делаешь что-нить на FireBird... где токо в одном регистре можно именовать...
или на Postgres, где GeoData <> Geodata

вы ещё на кирилице имена объектов попробуйте делать... будет вообще очень наглядно )

про голый id, я говорил что использую его в случаях, где он нигде не нужен, то есть на него не ссылаются.

без префиксов плохо... в базе есть разные объекты, их по разному используешь... к примеру
user_list - список пользователей (можно tbl_user)
view_user_list_login - список для формы логина
view_user_list_adm - список для формы администрирования
fun_user_access(...) - функция возвращающая права пользователя
proc_user_save(...) - хранимка для сохранения данных пользователя
proc_user_delete(...) - храника для удаления пользователя

чтобы сгрупировать в списке... например есть ещё ряд таблиц относящихся к user... с префиксами рядом будут
user_list - список пользователей
u_access_list - таблица прав пользователей
u_show_settings_list - настройки отображения для пользователей
u_events_log - лог событий пользователей

в запросах всё через алиасы...
SELECT * FROM user_list AS a
LEFT JOIN u_show_settings_list AS b ON a.user_id = b.user_id

разбивать по схемам... пробовал... можно сказать только для того, чтобы "было лучше видно" 30 таблиц разнёс по 5 схемам... сейчас плююсь... я использую EMS и там для каждой схемы - отдельно дерево а не один список для всей базы... напряжно прыгать... монитор не такой большой как хотелось бы
буду всё скидывать в dbo...
наверно раскидывать по схемам имеет смысл, когда таблиц более 40, и разделяемы данные хоть и связаны, но относятся к разным "приложеням"... так сказать "большие" логические группы...
и если нет ньюансов с правами, то удобно их назначать... одной командой, на схему )

по поводу "не целесообразности"... дело конечно Ваше... и мои "правила" только моё ИМХО... меня очень устраивает )

в же потом напишите на чём остановились... любопытно )
...
Рейтинг: 0 / 0
именование колонок
    #36192629
Фотография DeColo®es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм...
ИМХО для имени ПК главное - это уникальность в базе (схеме).

По крайнем мере, если как в MSSQL имя ключа не используется в коде (разве что индексы хинтовать).

Я применяю схему PK_ имя таблицы для первичного ключа и AK_ имя таблицы_поля ключа для альтернативных ключей.

PK - как правило, суроггатный ключ, цельночисленный или GUID идентификатор.
...
Рейтинг: 0 / 0
именование колонок
    #36192691
bublikom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DeColo®es
дада, суррогатный везде, хотя опыт использования составных ПК и не оставил жуткий воспоминаний (вродебы больше целостность, но в таблицах мрак - особенно когда ПК - 3 и более поля)

а зачем уникальность имени ПК в рамках схемы?

Кифирчик
EMS идею понел, возьмем на рассмотрение. Подчёркивания не рассматриваются, простите, это мой личный таракан) немного с эстетической стороны, немного из-за длинны, немного изза написания - чуточку затормаживает.

у нас проект на MS и если понадобится на Firebird - будет реализовано отдельно, покачто нет смысла плодить сущности.

про префиксы - эта база не будет видна наружу, вьюх пока не будет, а будут - максимум будет префикс vTableName. f, p слишком длинные ваши fun_, proc_

про схемы. тут подробнее, почему плюетесь? . понятно, что будут роли дающие права на часть или на все схемы. в чем проблема? таблиц думаю будет 50 (до сотни предположительно)
...
Рейтинг: 0 / 0
именование колонок
    #36192825
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bublikom про схемы. тут подробнее, почему плюетесь? . понятно, что будут роли дающие права на часть или на все схемы. в чем проблема? таблиц думаю будет 50 (до сотни предположительно)
плююсь, что неудобно прыгать при кодировании между разными схемами, да и разделение прав по схемам - не сработало... таблицы/процедуры очень взаимосвязаны, так что для каждых ролей права всё равно в ручную пообъектно выставлять приходится...
то есть хотел упростить себе работу с назначением прав - не вышло
хотел чтобы было логически сгруппировано - тоже не удобно, далеко прыгать
лучше сгруппировать в одном месте с преффиксами...

ещё раз повторюсь... ИМХО схемы, наверно имеют больший смысл, когда в одной базе какие-то очень разноплановые данные... у которых не так много связей между собою, или нет вообще... гипотетический пример... в одной БД надо уместить - база по документам, по земельным участкам и... допустим по органиациям...
тут общее что... список пользователей c инд.настройками... между базами по 0..2 связи
я бы сделал четыре схемы:
- user_ch (ch=chema)
- doc_ch
- org_ch
- zem_ch
с правами это вряд-ли что-то упростит, а вот процесс разработки будет намного проще... это по сути разные "приложения"

опять же, это всё зависит от того что за приложение...
одна крайность - это когда я 30 таблиц по 5 схемам раскидал, другая что мне попадалась, это когда ~1900 таблиц, и примерно столько же процедур - в одной схеме (dbo), хотя я бы там выделили с 2 десятка логических "подгрупп"... было бы на порядк проще ориентироваться
...
Рейтинг: 0 / 0
именование колонок
    #36192880
bublikom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я думаю, у нас всё проще потому что у нас почти трёхзвенка, а именно ASP. у нас будут таблицы, триггеры, внешние ключи, индексы и всё. вьюх, хранимок не будет (покрайней мере пока я их не вижу).

в этом случае, будет 5-10 схем, исключительно для логического(визуально) разделения.

покачто, с уходом префиксов, остаётся вопрос об именовании внешних ключей. или, если есть какието фундаментальные предложения/предостережения по поводу проблемы описанной в теме про схемы , я почитаю.
...
Рейтинг: 0 / 0
именование колонок
    #36192989
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Практика показывает, что для заводить под БД системы больше одной схемы нерационально. Для этого должны быть весьма весомые причины, обычно связанные с разграничением доступа. Для логической и визуальной группировки объектов схемы есть много других простых и удобных способов.
...
Рейтинг: 0 / 0
именование колонок
    #36193146
bublikom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenab

а можно поконкретнее? Вы уж простите, но выглядит голословно. какие могут быть проблемы?
Вот участиник предложил, мне идея понравилась
...
Рейтинг: 0 / 0
именование колонок
    #36193312
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне не понравилась. Я когда то пытался упражняться со схемами. Мало того, что приходилось скакать между схемами по сто раз на дню, постоянно раздавать объектные привилегии, так ещё для развёртывания тестовой системы пришлось создавать отдельную БД. При этом я хотел только отделить БД от кода. А уж если БД раздербанить по схемам, то париться придётся долго и трудно. С другой стороны я видел много систем у которых БД состоит из сотен таблиц лежащих в одной схеме и никого из пользователей и разработчиков это не бодало вообще. Найти любые таблицы хоть по префиксу, хоть по названию сущности не составляло никакого труда. Важно только давать объектам стандартные имена и немного ориентироваться в сущностях, которыми занимаешься.
...
Рейтинг: 0 / 0
именование колонок
    #36194168
bublikom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenab

спасибо, теперь немного понятнее.

мне по большому счёту только нужна визуальная группировка таблиц, и я уже начинаю понимать, что будет напряжно со схемами и оно того не стоит
...
Рейтинг: 0 / 0
именование колонок
    #36194339
Фотография DeColo®es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabА мне не понравилась. Я когда то пытался упражняться со схемами. Мало того, что приходилось скакать между схемами по сто раз на дню, постоянно раздавать объектные привилегии, так ещё для развёртывания тестовой системы пришлось создавать отдельную БД.Oracle?
...
Рейтинг: 0 / 0
именование колонок
    #36195396
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeColo®es,

Да.
...
Рейтинг: 0 / 0
именование колонок
    #36195705
Фотография DeColo®es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenab,

Изначально вопрос стоял про схемы в MSSQL, где они работают по-другому и намного удобнее, чем в Oracle для "логического разделения" объектов.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / именование колонок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]