powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше именовать поля PrimaryKey ?
25 сообщений из 58, страница 2 из 3
Как лучше именовать поля PrimaryKey ?
    #33063969
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanyL
ЗЫ: недавно заглянул в инстанс БД для MS SharePoint Portal Services - ряд таблиц с нормальными именами, а ряд с именами - Varchar1,Varchar2,Varchar3 и т.д. - вот так называть не стоит Как в SharePoint Portal Services не знаю, но в принципе такие имена допустимы для полей, зарезервированных под пользовательские расширения. Их смысл определяется не в словаре СУБД, а в словаре приложения.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33717753
xLock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
basМне очень понравился подход, который я увидел 2 года назад, теперь им и пользуюсь:
<кр_название_типа_поля><кр_название_таблицы>_<имя_поля>
Поддерживаю. Тоже использую аналогичный подход, за исключением <кр_название_типа_поля> - никогда не было необходимости.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33718273
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KSLcomмне больше нравится
Car(ID,Name)
Detail(ID,Name, Car_ID )

Поддерживаю!
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33718587
А с какой целью господа используют такую странную МД, в которой приходится заморачиваться с ключами ?
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33718589
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iamhere KSLcomмне больше нравится
Car(ID,Name)
Detail(ID,Name, Car_ID )

Поддерживаю!+1
Зверь(Код,Имя)
Свойства(Код,Имя, Код зверя )
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33718625
wwe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
wwe
Гость
комментаторА с какой целью господа используют такую странную МД, в которой приходится заморачиваться с ключами ?
Здравствуйте, Андрей Леонидович! :-)
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33718861
Опа ! Достойная цель.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33719172
Евгений_СТ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно, самое главное уже сказано - "Любая система всегда лучше, чем отсутствие системы".

Лично я использую такую нотацию. Все ключевые поля заканчиваю постфиксом _ID , все ссылки на другие таблицы по внешнему ключу заканчиваю постфиксом _DD .

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create table LSchet (
  LSchet_ID integer PRIMARY KEY,
  LSchet    integer,
  FIO       char( 50 ),
  Address   char( 50 ));

create table Lgota (
  LSchet_DD integer,     -- ссылка на таб. LSchet
  WorkDate  date,
  Lgota     numeric( 20 , 4 )
  );

В запросе мне удобнее если сразу видно, какое поле от первичного ключа, а какое - ссылка:

Код: plaintext
1.
select *
  from LSchet s left join Lgota l on (l.LSchet_DD = s.LSchet_ID);
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33719965
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений_СТВсе ключевые поля заканчиваю постфиксом _ID , все ссылки на другие таблицы по внешнему ключу заканчиваю постфиксом _DD .

а что обозначает постфикс DD?

а если просто ставить постфиксы PK и FK

INVOICE_PK
SUPPLIER_FK
INVOICE_DATE


LINEITEM_PK
INVOICE_FK
LINEITEM_AMOUNT
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33720954
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
proposed amendmentа если просто ставить постфиксы PK и FK
Эти постфиксы имхо естественно оставить для constraint-ов.

Впрочем, я вообще не понимаю смысла нотационно разделять PK и FK атрибуты. В связи с этим особенно интересен вопрос - как именовать FK атрибут, являющийся частью PK :))
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33721138
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer proposed amendmentа если просто ставить постфиксы PK и FK
Эти постфиксы имхо естественно оставить для constraint-ов.

Впрочем, я вообще не понимаю смысла нотационно разделять PK и FK атрибуты. В связи с этим особенно интересен вопрос - как именовать FK атрибут, являющийся частью PK :))

да это я уж так просто - разговор поддержать

хватает NAME_ID или ID_NAME но чаще первое
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33721662
Евгений_СТ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
proposed amendment Евгений_СТВсе ключевые поля заканчиваю постфиксом _ID , все ссылки на другие таблицы по внешнему ключу заканчиваю постфиксом _DD .

а что обозначает постфикс DD?

Обозначает ссылку на ключевое поле другой таблицы. Буквы _DD взяты "с потолка", просто для того, чтобы отличать от _ID . Можно было бы назвать например _II , но я посчитал, что ДД будет красивее :)
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33805800
cg_roma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KSLcom
Ну можно и так, но мне больше нравится
Car(ID,Name)
Detail(ID,Name,Car_ID)


Еще один голос в поддержку данного мнения.

В нашей компании, в рамках задачи создания, развития существующей документации, создали, обсудили, утвердили и теперь рекомендуем к использованию соглашения о правилах наименований объектов БД (DatabaseNameRules). Может кому интересно - цитирцю:

Правила наименований объектов баз данных

Общие
Все названия объектов писать в нижнем регистре английскими буквами (в некоторых серверах есть возможность именовать объекты БД кирилицей; на некоторых платформах имена в разных регистрах различаются)
Все служебные слова MySQL писать в верхнем регистре английскими буквами для удобного чтения кода скрипта
Выбирать англоязычные названия, не транслитерацию. Исключения: абревиатуры и другие подобные общеупотребляемые выражения, облегчающие понимание.
Для разделения имени на составляющие используется '_'

Сущности (таблицы)
Наименования сущностей в единственном числе. По аналогии с Delphi VCL: имя класса - имя таблицы, объект - запись в таблице

Атрибуты (поля)
В именах атрибутов имя таблицы указывать не нужно, т.к. на атрибуты ссылаемся через имя таблицы. В таком случае дублирование названия таблицы в выражениях customer.customer_surname, customer.customer_passport, customer.customer_address избыточно. Вместо таких избыточных наименований следует использовать customer.surname, customer.passport, customer.address и т.д.

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

Пример:

Таблица customer - первичный ключ customer.id
Таблица payment - первичный ключ payment.id

Внешний ключ
По договрености о первичном ключе, в каждой таблице мы имеем атрибут id. Для того, чтобы сослаться на эту таблицу, в дочерней таблице используем внешний ключ вида <имя таблицы>_id.

Пример:

Допустим, мы хотим из таблицы detail сослаться на таблицу master: используем поле detail.master_id.

Принцип еще хорошо иллюстрируется выражением: table.id = table_id

Используя такую схему наименования внешних ключей легко определить:

- все внешние ключи в таблице - их легко визуально выделить среди обыкновенных атрибутов
- по имени ключа сразу видно на какую таблицу он ссылается
- при написании запроса достаточно вспомнить, на какую таблицу мы хотим сослаться - дальше действует стандартное правило
...
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33805933
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cg_romaВсе названия объектов писать в нижнем регистре английскими буквами .....
Все служебные слова MySQL писать в верхнем регистре английскими буквами для удобного чтения кода скрипта
Аргументация этого пункта, признаться, улыбнула. То есть: ключевую для понимания запроса информацию (названия таблиц, полей итп) следует писать в нижнем регистре, зато выпячиваются FROM, JOIN, AND и прочие очень важные для понимания сути слова.

В остальном - как уже говорилось, любая система лучше отсутствия системы. Хотя легко назвать и недостатки - например, эта система обрушится, как только окажется необходимым иметь два foreign key-я между одной и той же парой таблиц.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33805968
cg_roma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerАргументация этого пункта, признаться, улыбнула. То есть: ключевую для понимания запроса информацию (названия таблиц, полей итп) следует писать в нижнем регистре, зато выпячиваются FROM, JOIN, AND и прочие очень важные для понимания сути слова.

Некоторые лица, учавствующие в обсуждении настояли на этом. Принимался документ сообща :)

softwarerВ остальном - как уже говорилось, любая система лучше отсутствия системы. Хотя легко назвать и недостатки - например, эта система обрушится, как только окажется необходимым иметь два foreign key-я между одной и той же парой таблиц.

Как раз первоначальной целью документа и являлось создание системы. Когда встанут острые вопросы - вернемся к пересмотру этого документа.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33805973
cg_roma
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добавлю, что лично мне болшье по душе нижний регистр
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33806186
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cg_romaНекоторые лица, учавствующие в обсуждении настояли на этом. Принимался документ сообща :)
Улыбнула именно аргументация. Само соглашение - может быть, и хуже других, но вопросов ровно два:

Принципиальное наличие согласованности

Удобство для команды в целом (для большинства или нечто в этом духе)

cg_romaКогда встанут острые вопросы - вернемся к пересмотру этого документа.
Это абсолютно правильно.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33807132
Student007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще вариант именования полей и таблиц:

1) Таблица называется маленькими буквами, название отражает содержимое во множественном числе, например: clients, orders
2) Поля таблицы называются маленькими буквами в формате tn[_field_name][_id|_date|...], где tn_ - двух-трех буквенное сокращение названия таблицы, field_name - сущность поля, _id - приставка для обозначения характеристики данных (дата, код и пр.). Например cl_id - PK таблицы clients, ord_issue_date - дата составления заказа из таблицы orders.

Удобство такого подхода в том, что небольшими усилиями мы всегда знаем поле какой таблицы используется в запросе, знаем что все поля в базе уникальные, знаем что никогда не наткнемся на зарезервированное слово при задании имени поля, используем как префикс, так и суффикс для информативного представления. Еще психологически легче восстанавливать название поля в последовательности название таблицы - название поля - тип/характеристика.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33807660
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KSLcomмне больше нравится
Car(ID,Name)
Detail(ID,Name, Car_ID )
Если вспомнить про NATURAL JOIN, то -1
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33810118
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76Если вспомнить про NATURAL JOIN, то -1

И сколько раз ты про него вспоминал в реальной практике??
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33810138
Фотография Lamer@fools.ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KSLcomА мне кажется, что маска типа delivery_adress_id больше подходит для FK. delivery_adress - имя справочника, id - первичный ключ. Сам для PK всегда использую просто ID.

+1.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33810243
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iamhere Dik76Если вспомнить про NATURAL JOIN, то -1

И сколько раз ты про него вспоминал в реальной практике??Скажем так - хотел бы чтоб он был в FB. Сам использую и в PK и в FK одинаковую запись id_table_name. Кстати NATURAL JOIN как раз и придуман для стимуляции использования одинаковых наименований.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33810546
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76Если вспомнить про NATURAL JOIN, то -1
Если вспоминать про natural join, то все, что способстствует отказу от него, имеет аргумент в свою пользу.

Что, впрочем, не мешает мне считать "просто ID" плохим решением.
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33811977
iamhere
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЧто, впрочем, не мешает мне считать "просто ID" плохим решением.

Если "просто ID" - плохое решение, то и "просто Name" должно быть плохим. Потому что тоже во многих таблицах такое поле есть и называется одинаково :)

И тогда что - все поля предварять префиксом???

а) снижается читабельность/писабельность
б) мешаются ограничения на размер поля
в) вообще лишее.

Или что - некоторые поля предварть префиксом, а некоторые - нет? Это просто бардак будет.

Просто надо взять за правило - как только в запросе есть две (и более) таблицы - сразу для всех вводим одно-двухбуквенные алиасы и на ВСЕ поля ссылаемся только с алиасом. Читается и пишется отлично, ничего не спутаешь, и вообще все замечательно.

Чем EMP_ID лучше EMP.ID?
...
Рейтинг: 0 / 0
Как лучше именовать поля PrimaryKey ?
    #33812093
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iamhereЧем EMP_ID лучше EMP.ID?ем что PK и FK будут именоваться одинаково.
emp.id = order.emp_id - на мой взгляд крайне не удобно
emp.emp_id = order.emp_id - так значительно лучше имхо
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше именовать поля PrimaryKey ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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