powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше именовать поля PrimaryKey ?
25 сообщений из 58, страница 1 из 3
Как лучше именовать поля PrimaryKey ?
    #33061385
crok77@mail.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как лучше именовать поля PrimaryKey ?
Например есть 2 таблицы
Car,Detail
в них PK соответственно CarID,DetailID
или ID_Car,ID_Detail
или ID,ID

Хотелосьбы услышать аргументированный ответ.

С уважением, crOK
ICQ 41063556
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061395
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единообразно.
Все остальное формально не принципиально. Есть конечно плюсы, типа, возможность написания запросов без алиасов, также если имя начинается на id - значит это ссылка или PK (если по одному полю), как известно, первые 2 символа строки проверяются быстрее, чем 2 последние, но это уже все ерунда.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061420
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, чтобы не только автор системы названий, но и другие
участники проекта могли разобраться.
Также считаю, что лучше префиксы вроде ID
писать сначала - тогда понятнее, что к чему относится.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061455
crok77@mail.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что народ скажет о плюсах минусах
1. ID_Car,ID_Detail
2. ID,ID
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061459
Paul Sacks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Идентификатор" должен быть говорящим.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061463
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я использую <имя поля>_id, например delivery_adress_id.Первым всегда идет описание сущности, а лишь потом префикс (я бы даже сказал постфикс), так как сущность все-таки главнее.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061473
KSLcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockЛично я использую <имя поля>_id, например delivery_adress_id.Первым всегда идет описание сущности, а лишь потом префикс (я бы даже сказал постфикс), так как сущность все-таки главнее.

А мне кажется, что маска типа delivery_adress_id больше подходит для FK. delivery_adress - имя справочника, id - первичный ключ. Сам для PK всегда использую просто ID.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061532
crok77@mail.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
т.е получается лучше использовать

для PK - ID
для FK - ID_TableName

например
Car(ID,Name)
Detail(ID,Name,ID_Car)

т.о. мы получаем быстрочитаемый SQL код ?
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061543
KSLcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crok77@mail.ruт.е получается лучше использовать

для PK - ID
для FK - ID_TableName

например
Car(ID,Name)
Detail(ID,Name,ID_Car)

т.о. мы получаем быстрочитаемый SQL код ?

Ну можно и так, но мне больше нравится
Car(ID,Name)
Detail(ID,Name, Car_ID )
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061549
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockЛично я использую <имя поля>_id, например
delivery_adress_id.Первым всегда идет описание сущности, а лишь потом
префикс (я бы даже сказал постфикс), так как сущность все-таки
главнее.

Сущность лучше выносить в название таблицы.
А идентификатор начинать с префикса id_

Например

table Something(
id_something
something_name
)

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061587
crok77@mail.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А чем это лучше ? Аргументируйте пожалуйста
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061636
Фотография Va1entin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблицу лучше называть по имени сущности - см. аргументы Stock'а
Аргументация за идентификатор типа id_something:

- Все идентификаторы имеют унифицированный вид
- Каждый "говорит" сам за себя
- Если идентификатор используется в другой таблице,
как foreign key по отношению к таблице, на которую ссылается,
то сразу видно что это ссылка (по префиксу).
Первый (первые несколько для сложного ключа)
идентификатор в таблице всегда primary key,
последующие - foreign key.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061641
KSLcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Va1entin
Сущность лучше выносить в название таблицы.
А идентификатор начинать с префикса id_

Например

table Something(
id_something
something_name
)


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

select Something.id_something по моему менее читаемо чем select Something.id
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061785
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To KSLcom>

Когда будете связывать 5-6 таблиц в запросе и увас будет несколько полей с одинаковыми именами а-ля name,id и т.д., я думаю, что очень захотите продублировать название сущности в имени. Кстати, PD не любит сущностей с одинаковым названием, поэтому у меня как-то на автомате все выходит.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061819
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Присоединюсь к прозвучавшему:

Код: plaintext
1.
Единообразно.
Все остальное формально не принципиально.

Лично я всегда использую в качестве первичного ключа поле TableName_ID. Какие преимущества я вижу в этом подходе перед другими:

1) Почти во всех связках получается условие a.table_id = b.table_id. Это дефолт, который хорошо виден глазу. Те редкие случаи, когда связка делается другим образом, зрительно выбиваются из этого ряда. Соответственно, минимизируется вероятность пропустить важную мелочь, просматривая чужой селект.

2) Аналогично, редкие случаи, выбивающиеся из общего ряда - например, ссылка в таблице на себя - также хорошо видны. Встречая поле типа table_id_parent - сразу видишь, что это не обычный pk и не обычный fk, а поле с некоторым особым смыслом. Например, в коде

Код: plaintext
1.
2.
3.
4.
create table ... 
  ...
  id_document_master integer,
  id_document_detail integer

есть все основания предположить, что это две обычных ссылки на таблицы document_master и document_detail соответственно. Видя же код

Код: plaintext
1.
2.
3.
4.
create table ... 
  ...
  document_id_master integer,
  document_id_detail integer

понятно, что это две ссылки на одну таблицу, и виден смысл, различие между этими ссылками.

Да, конечно, в первом случае можно использовать master_id_table и detail_id_table - но такого подхода я никогда не видел.

3) Это обеспечивает читаемый код при использовании алиасов таблиц. Я предпочитаю писать квалификаторы везде, кроме самых простых запросов; в этом случае запрос

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select
  a.table_a_id,
  a.field1,
  b.field2
from
  table_a a,
  table_b b
where
  a.table_a_id = b.table_a_id

выглядит удобнее, нежели

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select
  table_a.id,
  table_a.field1,
  table_b.field2
from
  table_a,
  table_b
where
  table_a.id = table_b.table_a_id

4) Нужно единообразие. Если выносить ID как префикс, точно так же нужно будет выносить и другие стандартные слова - Name, Date, Count, Qnt.... Лично с моей точки зрения они удобнее и естественнее как постфиксы. Например, если поля таблицы описывают четырех человек, у каждого из которых есть name, у троих - salary, и у двоих - hire_date, порядок полей

Код: plaintext
1.
2.
3.
4.
5.
human1_name
human1_salary
human1_hire_date
human2_name
....

представляется мне удобнее, нежели

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
name_human1
name_human2
name_human3
name_human4
salary_human1
salary_human2
....

Подчеркну - это личная точка зрения. Главное - должны быть четкие правила, соблюдаемые везде в проекте. Они должны быть продуманы - так, чтобы не требовалось исключений, и проработаны достаточно, чтобы все участники проекта полностью на автомате читали код и понимали что он значит.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061924
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне очень понравился подход, который я увидел 2 года назад, теперь им и пользуюсь:
<кр_название_типа_поля><кр_название_таблицы>_<имя_поля>

Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table Car(
   nC_id Number( 10 ),
   vC_abbr VarChar2( 10 ),
   vC_name VarChar2( 30 ));

create table Detail(
   nD_id Number( 10 ),
   nC_id Number( 10 ),
   vD_abbr VarChar2( 10 ),
   vD_name VarChar2( 30 ));
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061934
bas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не буду аггетировать никого за мой подход, но мне он кажется наиболее удачным из всех увиденных, т.к.:
1. Всегда ясно поля кого типа
2. Всегда ясно к какой таблице относится
3. Краткое
4. имя отделенно от типа и названия таблицы - легко читается
5. не дублируются имена таблиц :-)
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33061969
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bas1. Всегда ясно поля кого типа
Хм. Вы этим часто пользуетесь? Я встречал сторонников венгерской нотации, но таки сохранил убеждение, что тип поля должен быть ясен из его имени (то есть предназначения).
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33062002
KSLcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockTo KSLcom>

Когда будете связывать 5-6 таблиц в запросе и увас будет несколько полей с одинаковыми именами а-ля name,id и т.д., я думаю, что очень захотите продублировать название сущности в имени. Кстати, PD не любит сущностей с одинаковым названием, поэтому у меня как-то на автомате все выходит.

Абсолютно не возникает никаких проблем, потому как я всегда указываю полное наименования полей в запросах

select E1.ID, E2.ID, E3.ID
from Entity1 E1
left join Entity2 E2 on E1.ID=E2.ID
left join Entity3 E3 on E1.ID=E3.ID

и т.д.

При проектировании таблиц, придерживаюсь правил как и при описании структур в ЯП. Например:

Код: plaintext
1.
2.
3.
4.
5.
 type 
  TEntity= record 
    ID: integer;
    Name:  string ;
   end ;

Не вижу необходимости городить такое:
Код: plaintext
1.
2.
3.
4.
5.
 type 
  TEntity= record 
    TEntity_ID: integer;
    TEntity_Name:  string ;
   end ;
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33062011
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любая система лучше ее отсутствия.
Моя система довольно хорошо проработана и полностью меня устраиваеит.
Таблица называется с учетом имени сущности, но, в силу ограничений некоторых используемых мною СУБД, ограничивается длиной в 8 символов (сочетание латинских букв, знаков подчеркивания и цифр, причем, первый символ - всегда буква). Множественные числа в названиях принципиально не используются (т.е. называю таблицы не "ORDERS", а "ORDER"). Плюс к тому, чаще всего имя таблицы у меня имеет префикс общности (2 буквы или 1 буква и подчеркивание). Например, P_ORDHDR - заголовки заказов на приобретение, S_ORDLIN - строки заказов на продажу, F_USER - пользователи системы (общности, соответственно, "purchase", "sales" и "fundamentals").
PK таблицы суррогатный и построен по одному полю. Его имя равно имя таблицы с добавлением суффикса ID. Например, P_ORDHDRID , S_ORDLINID , F_USERID
Внешние ключи именуются точно так же, как и PK, при условии, что это возможно. Иногда это сделать невозможно. Например, таблица ссылается на одну и ту же другую таблицу дважды и более. Или таблица ссылается на саму себя. В случае ссылки на себя, FK, как правило, обзывается просто PARENTID . А случай нескольких ссылок из одной таблицы на другую - исключительный. Тут FK называются, как получится.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33062261
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Система ID с моей точки зрения неудобна тем, что при миграции ключа его в любом случае необходимо переименовывать, а во-вторых фрагмент
Код: plaintext
where а.order_id = :x
более читаем чем
Код: plaintext
where а.id = :x
.
KSLcom[quot Shtock]To KSLcom>
При проектировании таблиц, придерживаюсь правил как и при описании структур в ЯП. Аналогия не полная, в ЯП не используются алиасы.
Но согласен с тем, что и эта система много лучше чем никакой.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33062343
KSLcom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRСистема ID с моей точки зрения неудобна тем, что при миграции ключа его в любом случае необходимо переименовывать, а во-вторых фрагмент
Код: plaintext
where а.order_id = :x
более читаем чем
Код: plaintext
where а.id = :x


А здесь а.order_id это что такое? Если это PK, то почему тогда для таблицы order такой странный псевдоним - "а".
Код: plaintext
where order.id = :x
короче и несёт абсолютно туже информацию. А если это FK на таблицу Order то я всёми руками и ногами за такой вариант, т.к. всегда сам его использую р чём и писал выше.

ModelR
Аналогия не полная, в ЯП не используются алиасы.
Но согласен с тем, что и эта система много лучше чем никакой.

В SQL наличие псевдонимов, как дополнительное удобство при написание запроса.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33062639
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KSLcomwhere order.id = :x короче и несёт абсолютно туже информацию
Короче только если рассматривать в отрыве от всего остального запроса. Когда этот "order" надо употребить еще тридцать-сорок раз, становится существенно некороче.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33063443
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crok77@mail.ru
а что народ скажет о плюсах минусах
1. ID_Car,ID_Detail
2. ID,ID

Минус варианта 2: ухудшение сематичности и ограничениях в SQL.
Семантичность - больше надо усилий, в интепритации данных. Ограничения в SQL- , например, во многих случаях придется отказаться от естественного соединения. Причем - это относится ко всем столбцам - т.е. для разных свойств лучше иметь разные имена атрибутов.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33063508
Фотография SanyL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paul Sacks"Идентификатор" должен быть говорящим.

Полностью согласен....
ЗЫ: недавно заглянул в инстанс БД для MS SharePoint Portal Services - ряд таблиц с нормальными именами, а ряд с именами - Varchar1,Varchar2,Varchar3 и т.д. - вот так называть не стоит
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше именовать поля PrimaryKey ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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