powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Имя первичного ключа: StatusID vs ID
15 сообщений из 15, страница 1 из 1
Имя первичного ключа: StatusID vs ID
    #34695247
Фотография Капюшон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вы предпочитаете именовать поле первичного ключа (integer): StatusID или ID (ProjectID или ID, ClientID или ID...)
Я предпочитаю ID, т.к. достигается единообразие, упрощается написание клиентского кода, не дублируется имя таблицы (мы же не включаем имя таблицы в каждое поле)...
Подобно ID в моей системе обозначений существуют поля Title и Descr.
Правда, ID может быть зарезервированным словом, это недостаток данной нотации.

Ваша точка зрения?
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34695311
Фотография dmidek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProjectID. Это значит для меня, что поле является идентификатором проекта.
Кроме того, я хочу сохранять единообразное имя поля при его использовании в качестве
первичного ключа и в качестве вторичного из других таблиц.

Иначе

Subprojects

ID Project_ID (FK to Projects.ID)

Projects

ID

ну очень некрасиво ...

Помимо прочего, получается, что второстепенное поле имеет полное имя,
а главное - ничего не значащее ID.
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34695547
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КапюшонКак вы предпочитаете именовать поле первичного ключа (integer): StatusID или ID (ProjectID или ID, ClientID или ID...)
Я предпочитаю ID, т.к. достигается единообразие, упрощается написание клиентского кода, не дублируется имя таблицы (мы же не включаем имя таблицы в каждое поле)...
Подобно ID в моей системе обозначений существуют поля Title и Descr.
Правда, ID может быть зарезервированным словом, это недостаток данной нотации.

Ваша точка зрения?
Я предпочитаю просто id. Дублирование имени сущности внутри нее - излишне. А вот глобальные имена стараюсь делать достаточно длинными. Помню, как наелся из-за этого с какой-то древней версией ErWin, который упорно отказывался понимать, что поле в дочерней и родительской таблицах может по-разному называться. К счастью в современных версиях с этим вроде бы порядок. Вообще, это не играет существенной роли. Главное, чтобы во всем проекте наблюдалось единообразие.
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34696057
Фотография sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StatusID ?
ProjectID ?
ID ?
Name ?

Если ID, является первичным ключём, то настоятельно советую впереди ID добавить имя своей таблицы, а для колнок, не являющихся первичным ключем, например Name типа VARCHAR() в приципе, можно давать, унифицированные, одинаковые названия, однако это спорное утверждение.
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34696099
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sparrowЕсли ID, является первичным ключём, то настоятельно советую впереди ID добавить имя своей таблицы, А чем эта настоятельность аргументируется? Собственной привычкой или какими-то рациональными соображениями?
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34696104
Фотография sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. имя сущносет 'Status', слишком общее, так и хочется впереди конкретизировать - чей статус.
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34696141
Фотография sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey >
Наверно сказалась привычка 'древней версией ErWin',
рациональное соображение в том, что из SQL комманды, почти сразу можно понять что и с чем связано, когда разбираешься со слабо документированным приложением.
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34696200
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sparrowBogdanov Andrey >
Наверно сказалась привычка 'древней версией ErWin',
рациональное соображение в том, что из SQL комманды, почти сразу можно понять что и с чем связано, когда разбираешься со слабо документированным приложением.
На мой взгляд существенным минусом является значительное удлиненние идентификаторов (ведь если обязательно требовать вместо Id писать ParentDocStatusId, то тогда и вместо Name надо писать ParentDocStatusName и т.п.). Это сильно сказывается на читабельности кода в отрицательную сторону. Короткие имена (но не аббревиатуры) значительно повышают скорость чтения кода. Ну а в местах, где восприятие имени может быть неоднозначным (например, в запросе объединяющем несколько таблиц) всегда можно использовать полное имя (ParentDocStatus.Id).
Кстати, в других языках программирования почти никогда не расширяют локальные имена именем объемлющей сущности. В любом классе по работе с файлами надутся функции open и close, но почти никто не называет их fileopen и fileclose.
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34696393
Фотография sparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov Andrey >
понятно,

'ParentDocStatusId' -в принципе ничего страшного, можно и длиньше

Наверно это Forenkey на DocStatusId таблицы DocStatus - тогда его, наверно, можно назвать ParentId.

Древовидные связи типа ...Id - Parent...Id - стараюсь использавать как можно реже, только когда сущьность очевидно деревидная и глубина вложенности будет больше 5.
А это согластесь редкие случаи.
Кстати, SQL особый, совершенно не объектный язык, потому в нем плохо приживаются объектные и процедурные по бльшому счету подходы (методы работы).
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34696668
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КапюшонВаша точка зрения?
Не затруднит ли Вас прежде уточнить, какие именно вопросы остались после знакомства например с моей точкой зрения в предыдущих обсуждениях той же темы?
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34696679
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bogdanov AndreyВ любом классе по работе с файлами надутся функции open и close, но почти никто не называет их fileopen и fileclose.
Потому что почти никогда не требуется писать код наподобие

Код: plaintext
MyObject.Open.Open.Read.Open.Parse

Если бы такой код был типичным - мгновенно восторжествовал бы стиль

Код: plaintext
MyObject.OpenObject.ReadCfgFile.OpenXmlFile.ParseXml
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34696691
Осака Вестингауз
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если уж совсем невмоготу хочется дублировать название таблицы в каждом поле, то хотя бы сзади имени поля. Потому что если спереди, то 1) с клавиатуры искать по первым буквам невозможно, 2) в выпадающих списках обычной ширины получается нужно выбирать из 20 одинаковых имён таблицы.
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34697140
Фотография Капюшон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Не затруднит ли Вас прежде уточнить, какие именно вопросы остались после знакомства например с моей точкой зрения в предыдущих обсуждениях той же темы?

Я, к сожалению, не нашел ни вашу точку зрения, ни предыдущее обсуждение как таковое...
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34697160
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sparrowBogdanov Andrey >
понятно,
'ParentDocStatusId' -в принципе ничего страшного, можно и длиньше Длиньше можно, но время затрачиваемое на понимание кода в таком случае прямо пропорционально (а скорее всего даже пропорционально квадрату) длины идентификаторов. Ведь вместо того, чтобы увидеть просто Name я вынужден буду "прочитать" весь идентификатор до конца, чтобы выделить в нем смысловую часть. Это становится совсем приятным занятием, если индентификаторы приведены к одному регистру (лично меня особенно верхний регистр утруждает).

sparrowНаверно это Forenkey на DocStatusId таблицы DocStatus - тогда его, наверно, можно назвать ParentId.
Древовидные связи типа ...Id - Parent...Id - Я не говорил ни о каких древовидных связях. У меня есть табличка ParentDocStatus (вы же сами сказали, что название сущности просто Status - вас не устраивает, вот я и дополнил его - имеем "статусы документов верхнего уровня"). В этот табличке есть идентификатор и наименование. По вашей рекомендации к названиям колонок добавляем имя таблицы вот и имеем ParentDocStatusId, ParentDocStatusName и т.п.
...
Рейтинг: 0 / 0
Имя первичного ключа: StatusID vs ID
    #34697182
Bogdanov Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Bogdanov AndreyВ любом классе по работе с файлами надутся функции open и close, но почти никто не называет их fileopen и fileclose.
Потому что почти никогда не требуется писать код наподобие

Код: plaintext
MyObject.Open.Open.Read.Open.Parse

Если бы такой код был типичным - мгновенно восторжествовал бы стиль

Код: plaintext
MyObject.OpenObject.ReadCfgFile.OpenXmlFile.ParseXml

Честно скажу, что для меня вторая строчка ничуть не понятнее первой. Попробую разобраться.
Очевидно мы имеем некоторую сущность "Object". У этой сущности есть метод Open и вот тут расширение имени метода до OpenObject совершенно бессмысленно. А вот дальше - непонятно. Видимо наш метод Open возвращает какой-то еще объект. В этом случае название Open скорее всего не адекватно. Или у нас метод занимается не открытием объекта, а открытием какой-то другой сущности ассоциированной с объектом. В этом случае и название должно было бы быть что-то типа OpenStream. И т.д.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Имя первичного ключа: StatusID vs ID
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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