|
|
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Как лучше именовать поля PrimaryKey ? Например есть 2 таблицы Car,Detail в них PK соответственно CarID,DetailID или ID_Car,ID_Detail или ID,ID Хотелосьбы услышать аргументированный ответ. С уважением, crOK ICQ 41063556 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:01 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Единообразно. Все остальное формально не принципиально. Есть конечно плюсы, типа, возможность написания запросов без алиасов, также если имя начинается на id - значит это ссылка или PK (если по одному полю), как известно, первые 2 символа строки проверяются быстрее, чем 2 последние, но это уже все ерунда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:04 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Так, чтобы не только автор системы названий, но и другие участники проекта могли разобраться. Также считаю, что лучше префиксы вроде ID писать сначала - тогда понятнее, что к чему относится. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:13 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
а что народ скажет о плюсах минусах 1. ID_Car,ID_Detail 2. ID,ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:24 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
"Идентификатор" должен быть говорящим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:25 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Лично я использую <имя поля>_id, например delivery_adress_id.Первым всегда идет описание сущности, а лишь потом префикс (я бы даже сказал постфикс), так как сущность все-таки главнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:26 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
ShtockЛично я использую <имя поля>_id, например delivery_adress_id.Первым всегда идет описание сущности, а лишь потом префикс (я бы даже сказал постфикс), так как сущность все-таки главнее. А мне кажется, что маска типа delivery_adress_id больше подходит для FK. delivery_adress - имя справочника, id - первичный ключ. Сам для PK всегда использую просто ID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:30 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
т.е получается лучше использовать для PK - ID для FK - ID_TableName например Car(ID,Name) Detail(ID,Name,ID_Car) т.о. мы получаем быстрочитаемый SQL код ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:48 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
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 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:53 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
ShtockЛично я использую <имя поля>_id, например delivery_adress_id.Первым всегда идет описание сущности, а лишь потом префикс (я бы даже сказал постфикс), так как сущность все-таки главнее. Сущность лучше выносить в название таблицы. А идентификатор начинать с префикса id_ Например table Something( id_something something_name ) Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:55 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
А чем это лучше ? Аргументируйте пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 11:03 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Таблицу лучше называть по имени сущности - см. аргументы Stock'а Аргументация за идентификатор типа id_something: - Все идентификаторы имеют унифицированный вид - Каждый "говорит" сам за себя - Если идентификатор используется в другой таблице, как foreign key по отношению к таблице, на которую ссылается, то сразу видно что это ссылка (по префиксу). Первый (первые несколько для сложного ключа) идентификатор в таблице всегда primary key, последующие - foreign key. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 11:17 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Va1entin Сущность лучше выносить в название таблицы. А идентификатор начинать с префикса id_ Например table Something( id_something something_name ) Меня например напрягает повторение названия сущности в именах полей. Ведь из названия таблицы уже можно понять к чему поле относится, зачем дублировать? select Something.id_something по моему менее читаемо чем select Something.id ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 11:19 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
To KSLcom> Когда будете связывать 5-6 таблиц в запросе и увас будет несколько полей с одинаковыми именами а-ля name,id и т.д., я думаю, что очень захотите продублировать название сущности в имени. Кстати, PD не любит сущностей с одинаковым названием, поэтому у меня как-то на автомате все выходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 11:59 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Присоединюсь к прозвучавшему: Код: plaintext 1. Лично я всегда использую в качестве первичного ключа поле TableName_ID. Какие преимущества я вижу в этом подходе перед другими: 1) Почти во всех связках получается условие a.table_id = b.table_id. Это дефолт, который хорошо виден глазу. Те редкие случаи, когда связка делается другим образом, зрительно выбиваются из этого ряда. Соответственно, минимизируется вероятность пропустить важную мелочь, просматривая чужой селект. 2) Аналогично, редкие случаи, выбивающиеся из общего ряда - например, ссылка в таблице на себя - также хорошо видны. Встречая поле типа table_id_parent - сразу видишь, что это не обычный pk и не обычный fk, а поле с некоторым особым смыслом. Например, в коде Код: plaintext 1. 2. 3. 4. есть все основания предположить, что это две обычных ссылки на таблицы document_master и document_detail соответственно. Видя же код Код: plaintext 1. 2. 3. 4. понятно, что это две ссылки на одну таблицу, и виден смысл, различие между этими ссылками. Да, конечно, в первом случае можно использовать master_id_table и detail_id_table - но такого подхода я никогда не видел. 3) Это обеспечивает читаемый код при использовании алиасов таблиц. Я предпочитаю писать квалификаторы везде, кроме самых простых запросов; в этом случае запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. выглядит удобнее, нежели Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 4) Нужно единообразие. Если выносить ID как префикс, точно так же нужно будет выносить и другие стандартные слова - Name, Date, Count, Qnt.... Лично с моей точки зрения они удобнее и естественнее как постфиксы. Например, если поля таблицы описывают четырех человек, у каждого из которых есть name, у троих - salary, и у двоих - hire_date, порядок полей Код: plaintext 1. 2. 3. 4. 5. представляется мне удобнее, нежели Код: plaintext 1. 2. 3. 4. 5. 6. 7. Подчеркну - это личная точка зрения. Главное - должны быть четкие правила, соблюдаемые везде в проекте. Они должны быть продуманы - так, чтобы не требовалось исключений, и проработаны достаточно, чтобы все участники проекта полностью на автомате читали код и понимали что он значит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:04 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Мне очень понравился подход, который я увидел 2 года назад, теперь им и пользуюсь: <кр_название_типа_поля><кр_название_таблицы>_<имя_поля> Например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:23 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
не буду аггетировать никого за мой подход, но мне он кажется наиболее удачным из всех увиденных, т.к.: 1. Всегда ясно поля кого типа 2. Всегда ясно к какой таблице относится 3. Краткое 4. имя отделенно от типа и названия таблицы - легко читается 5. не дублируются имена таблиц :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:27 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
bas1. Всегда ясно поля кого типа Хм. Вы этим часто пользуетесь? Я встречал сторонников венгерской нотации, но таки сохранил убеждение, что тип поля должен быть ясен из его имени (то есть предназначения). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:34 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
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. Не вижу необходимости городить такое: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:44 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Любая система лучше ее отсутствия. Моя система довольно хорошо проработана и полностью меня устраиваеит. Таблица называется с учетом имени сущности, но, в силу ограничений некоторых используемых мною СУБД, ограничивается длиной в 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 называются, как получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:47 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Система ID с моей точки зрения неудобна тем, что при миграции ключа его в любом случае необходимо переименовывать, а во-вторых фрагмент Код: plaintext Код: plaintext KSLcom[quot Shtock]To KSLcom> При проектировании таблиц, придерживаюсь правил как и при описании структур в ЯП. Аналогия не полная, в ЯП не используются алиасы. Но согласен с тем, что и эта система много лучше чем никакой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 13:40 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
ModelRСистема ID с моей точки зрения неудобна тем, что при миграции ключа его в любом случае необходимо переименовывать, а во-вторых фрагмент Код: plaintext Код: plaintext А здесь а.order_id это что такое? Если это PK, то почему тогда для таблицы order такой странный псевдоним - "а". Код: plaintext ModelR Аналогия не полная, в ЯП не используются алиасы. Но согласен с тем, что и эта система много лучше чем никакой. В SQL наличие псевдонимов, как дополнительное удобство при написание запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 14:01 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
KSLcomwhere order.id = :x короче и несёт абсолютно туже информацию Короче только если рассматривать в отрыве от всего остального запроса. Когда этот "order" надо употребить еще тридцать-сорок раз, становится существенно некороче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 15:16 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
crok77@mail.ru а что народ скажет о плюсах минусах 1. ID_Car,ID_Detail 2. ID,ID Минус варианта 2: ухудшение сематичности и ограничениях в SQL. Семантичность - больше надо усилий, в интепритации данных. Ограничения в SQL- , например, во многих случаях придется отказаться от естественного соединения. Причем - это относится ко всем столбцам - т.е. для разных свойств лучше иметь разные имена атрибутов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 20:22 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Paul Sacks"Идентификатор" должен быть говорящим. Полностью согласен.... ЗЫ: недавно заглянул в инстанс БД для MS SharePoint Portal Services - ряд таблиц с нормальными именами, а ряд с именами - Varchar1,Varchar2,Varchar3 и т.д. - вот так называть не стоит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 22:05 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
SanyL ЗЫ: недавно заглянул в инстанс БД для MS SharePoint Portal Services - ряд таблиц с нормальными именами, а ряд с именами - Varchar1,Varchar2,Varchar3 и т.д. - вот так называть не стоит Как в SharePoint Portal Services не знаю, но в принципе такие имена допустимы для полей, зарезервированных под пользовательские расширения. Их смысл определяется не в словаре СУБД, а в словаре приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 10:09 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
basМне очень понравился подход, который я увидел 2 года назад, теперь им и пользуюсь: <кр_название_типа_поля><кр_название_таблицы>_<имя_поля> Поддерживаю. Тоже использую аналогичный подход, за исключением <кр_название_типа_поля> - никогда не было необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 14:04 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
KSLcomмне больше нравится Car(ID,Name) Detail(ID,Name, Car_ID ) Поддерживаю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 16:25 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
А с какой целью господа используют такую странную МД, в которой приходится заморачиваться с ключами ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 17:51 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
iamhere KSLcomмне больше нравится Car(ID,Name) Detail(ID,Name, Car_ID ) Поддерживаю!+1 Зверь(Код,Имя) Свойства(Код,Имя, Код зверя ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 17:52 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
комментаторА с какой целью господа используют такую странную МД, в которой приходится заморачиваться с ключами ? Здравствуйте, Андрей Леонидович! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 18:07 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Опа ! Достойная цель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2006, 19:45 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Собственно, самое главное уже сказано - "Любая система всегда лучше, чем отсутствие системы". Лично я использую такую нотацию. Все ключевые поля заканчиваю постфиксом _ID , все ссылки на другие таблицы по внешнему ключу заканчиваю постфиксом _DD . Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. В запросе мне удобнее если сразу видно, какое поле от первичного ключа, а какое - ссылка: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 03:56 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Евгений_СТВсе ключевые поля заканчиваю постфиксом _ID , все ссылки на другие таблицы по внешнему ключу заканчиваю постфиксом _DD . а что обозначает постфикс DD? а если просто ставить постфиксы PK и FK INVOICE_PK SUPPLIER_FK INVOICE_DATE LINEITEM_PK INVOICE_FK LINEITEM_AMOUNT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 11:58 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
proposed amendmentа если просто ставить постфиксы PK и FK Эти постфиксы имхо естественно оставить для constraint-ов. Впрочем, я вообще не понимаю смысла нотационно разделять PK и FK атрибуты. В связи с этим особенно интересен вопрос - как именовать FK атрибут, являющийся частью PK :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 16:47 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
softwarer proposed amendmentа если просто ставить постфиксы PK и FK Эти постфиксы имхо естественно оставить для constraint-ов. Впрочем, я вообще не понимаю смысла нотационно разделять PK и FK атрибуты. В связи с этим особенно интересен вопрос - как именовать FK атрибут, являющийся частью PK :)) да это я уж так просто - разговор поддержать хватает NAME_ID или ID_NAME но чаще первое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 17:45 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
proposed amendment Евгений_СТВсе ключевые поля заканчиваю постфиксом _ID , все ссылки на другие таблицы по внешнему ключу заканчиваю постфиксом _DD . а что обозначает постфикс DD? Обозначает ссылку на ключевое поле другой таблицы. Буквы _DD взяты "с потолка", просто для того, чтобы отличать от _ID . Можно было бы назвать например _II , но я посчитал, что ДД будет красивее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2006, 23:45 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
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 Используя такую схему наименования внешних ключей легко определить: - все внешние ключи в таблице - их легко визуально выделить среди обыкновенных атрибутов - по имени ключа сразу видно на какую таблицу он ссылается - при написании запроса достаточно вспомнить, на какую таблицу мы хотим сослаться - дальше действует стандартное правило ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 14:49 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
cg_romaВсе названия объектов писать в нижнем регистре английскими буквами ..... Все служебные слова MySQL писать в верхнем регистре английскими буквами для удобного чтения кода скрипта Аргументация этого пункта, признаться, улыбнула. То есть: ключевую для понимания запроса информацию (названия таблиц, полей итп) следует писать в нижнем регистре, зато выпячиваются FROM, JOIN, AND и прочие очень важные для понимания сути слова. В остальном - как уже говорилось, любая система лучше отсутствия системы. Хотя легко назвать и недостатки - например, эта система обрушится, как только окажется необходимым иметь два foreign key-я между одной и той же парой таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 15:14 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
softwarerАргументация этого пункта, признаться, улыбнула. То есть: ключевую для понимания запроса информацию (названия таблиц, полей итп) следует писать в нижнем регистре, зато выпячиваются FROM, JOIN, AND и прочие очень важные для понимания сути слова. Некоторые лица, учавствующие в обсуждении настояли на этом. Принимался документ сообща :) softwarerВ остальном - как уже говорилось, любая система лучше отсутствия системы. Хотя легко назвать и недостатки - например, эта система обрушится, как только окажется необходимым иметь два foreign key-я между одной и той же парой таблиц. Как раз первоначальной целью документа и являлось создание системы. Когда встанут острые вопросы - вернемся к пересмотру этого документа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 15:21 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Добавлю, что лично мне болшье по душе нижний регистр ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 15:23 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
cg_romaНекоторые лица, учавствующие в обсуждении настояли на этом. Принимался документ сообща :) Улыбнула именно аргументация. Само соглашение - может быть, и хуже других, но вопросов ровно два: Принципиальное наличие согласованности Удобство для команды в целом (для большинства или нечто в этом духе) cg_romaКогда встанут острые вопросы - вернемся к пересмотру этого документа. Это абсолютно правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 16:10 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Вот еще вариант именования полей и таблиц: 1) Таблица называется маленькими буквами, название отражает содержимое во множественном числе, например: clients, orders 2) Поля таблицы называются маленькими буквами в формате tn[_field_name][_id|_date|...], где tn_ - двух-трех буквенное сокращение названия таблицы, field_name - сущность поля, _id - приставка для обозначения характеристики данных (дата, код и пр.). Например cl_id - PK таблицы clients, ord_issue_date - дата составления заказа из таблицы orders. Удобство такого подхода в том, что небольшими усилиями мы всегда знаем поле какой таблицы используется в запросе, знаем что все поля в базе уникальные, знаем что никогда не наткнемся на зарезервированное слово при задании имени поля, используем как префикс, так и суффикс для информативного представления. Еще психологически легче восстанавливать название поля в последовательности название таблицы - название поля - тип/характеристика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 22:06 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
KSLcomмне больше нравится Car(ID,Name) Detail(ID,Name, Car_ID ) Если вспомнить про NATURAL JOIN, то -1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 10:00 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Dik76Если вспомнить про NATURAL JOIN, то -1 И сколько раз ты про него вспоминал в реальной практике?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 21:23 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
KSLcomА мне кажется, что маска типа delivery_adress_id больше подходит для FK. delivery_adress - имя справочника, id - первичный ключ. Сам для PK всегда использую просто ID. +1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 21:39 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
iamhere Dik76Если вспомнить про NATURAL JOIN, то -1 И сколько раз ты про него вспоминал в реальной практике??Скажем так - хотел бы чтоб он был в FB. Сам использую и в PK и в FK одинаковую запись id_table_name. Кстати NATURAL JOIN как раз и придуман для стимуляции использования одинаковых наименований. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 00:06 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
Dik76Если вспомнить про NATURAL JOIN, то -1 Если вспоминать про natural join, то все, что способстствует отказу от него, имеет аргумент в свою пользу. Что, впрочем, не мешает мне считать "просто ID" плохим решением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 10:00 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
softwarerЧто, впрочем, не мешает мне считать "просто ID" плохим решением. Если "просто ID" - плохое решение, то и "просто Name" должно быть плохим. Потому что тоже во многих таблицах такое поле есть и называется одинаково :) И тогда что - все поля предварять префиксом??? а) снижается читабельность/писабельность б) мешаются ограничения на размер поля в) вообще лишее. Или что - некоторые поля предварть префиксом, а некоторые - нет? Это просто бардак будет. Просто надо взять за правило - как только в запросе есть две (и более) таблицы - сразу для всех вводим одно-двухбуквенные алиасы и на ВСЕ поля ссылаемся только с алиасом. Читается и пишется отлично, ничего не спутаешь, и вообще все замечательно. Чем EMP_ID лучше EMP.ID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 16:29 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
iamhereЧем EMP_ID лучше EMP.ID?ем что PK и FK будут именоваться одинаково. emp.id = order.emp_id - на мой взгляд крайне не удобно emp.emp_id = order.emp_id - так значительно лучше имхо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 16:59 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
iamhereЧем EMP_ID лучше EMP.ID? Рисовать легче. Пир создании в CASE-средстве внешнего ключа в дочернюю таблицу мигрирует поле с "правильным" именем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 17:01 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
iamhereЕсли "просто ID" - плохое решение, то и "просто Name" должно быть плохим. В первую очередь, схема этого рассуждения представляется мне сомнительной. Во вторую очередь, "просто Name" - я лично не использую. iamhereИ тогда что - все поля предварять префиксом??? Всем полям давать осмысленные и достаточно различимые имена. В том числе в этом может помочь префикс. iamhereПросто надо взять за правило - как только в запросе есть две (и более) таблицы - сразу для всех вводим одно-двухбуквенные алиасы Это правильно, но в случае ID не слишком помогает по причинам, указанным Денисом. Плюс, действует еще то соображение, что когда одно-двухбуквенных алиасов оказывается пятнадцать-двадцать-сорок штук, более различимые поля помогают читать запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2006, 18:18 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
iamhere Если "просто ID" - плохое решение, то и "просто Name" должно быть плохим. Потому что тоже во многих таблицах такое поле есть и называется одинаково :) И тогда что - все поля предварять префиксом??? ... Или что - некоторые поля предварть префиксом, а некоторые - нет? Это просто бардак будет. ... По-моему хорошо аргументированно. Кто против "PK - всегда ID", можете конкретно ответить на каждый заданный вопрос в этом высказывании? 1. Если "просто ID" - плохое решение, то и "просто Name" должно быть плохим. Потому что тоже во многих таблицах такое поле есть и называется одинаково :) И тогда что - все поля предварять префиксом??? 2. Или что - некоторые поля предварть префиксом, а некоторые - нет? 3. Просто надо взять за правило - как только в запросе есть две (и более) таблицы - сразу для всех вводим одно-двухбуквенные алиасы и на ВСЕ поля ссылаемся только с алиасом. Читается и пишется отлично, ничего не спутаешь, и вообще все замечательно. Кто-то против такого правила? 4. Чем EMP_ID лучше EMP.ID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2006, 15:12 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
softwarer iamhereЕсли "просто ID" - плохое решение, то и "просто Name" должно быть плохим. В первую очередь, схема этого рассуждения представляется мне сомнительной. Уважаемый softwarer, когада-то читал на Вашем сайте об уверенности в своем умении четко следовать логическим рассуждениям, но в данном случае - в чем сомнительность высказывания: iamhereЕсли "просто ID" - плохое решение, то и "просто Name" должно быть плохим. Вполне логичный вывод. Другое дело, что у каждого есть свои эстетические предпочтения и доля здравого смысла - вот корень данной дискуссии. Мне кажется - каждый должен осмыслить услышанное и опредлиться со своими предпочтениями. Одним из главных критериев верности выбора может служить чувство комфорта и "симпатишности", наблюдаемого в процессе работы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2006, 15:26 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
на вкус и цвет товарищей нет. Какой внутренний стандарт примите, тот и будет правильным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2006, 15:31 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
cg_romaУважаемый softwarer, когада-то читал на Вашем сайте об уверенности в своем умении четко следовать логическим рассуждениям, Любопытно, поскольку не припомню там подобных утверждений. Возможно, Вы имеете в виду параграф про соблюдение темы дискуссии; возможно же - Вы имеете в виду параграф "Логика", где я как раз предостерегаю от того, чем Вы, возможно, занялись - подмены сказанного мной Вашим мнением о том, что же я имел в виду. cg_romaно в данном случае - в чем сомнительность высказывания: ..... Вполне логичный вывод. Хм. Признаться, я почти уверен, что Вы не строили цепочку рассуждений, приводящую к этому выводу, и "вполне логичный" следует читать как "интуитивно кажется мне верным". Сомнительность же его в том, что его можно оспорить, причем вполне логичным рассуждением. Например, так: Поле ID используется почти исключительно для решения двух задач: выборки одиночной записи по ключу и связывания данных в запросе. Поле Name практически никогда не применяется для решения этих задач, зато применяется для решения задач, в которых практически никогда не используется поле ID. Таким образом, доказано принципиальное различие этих полей, более того - практическое отсутствие общности сверх самого базового уровня (уровня "и то, и другое - поля"). Исходя из этого, нет никаких оснований полагать, что нечто, верное для одного из полей, окажется верным для другого, равно как и наоборот. Повседневная аналогия такой ситуации - практически любой стандарт говорит об использовании осмысленных идентификаторов, но в то же время практически любой стандарт допускает использование переменных наподобие i, j, ii в роли варианта цикла, хотя это вроде бы противоречивые подходы. cg_romaДругое дело, что у каждого есть свои эстетические предпочтения и доля здравого смысла - вот корень данной дискуссии. Мне кажется - каждый должен осмыслить услышанное и опредлиться Безусловно. Именно поэтому я в ходе этой дискуссии минимизировал изложение собственных вкусов и в основном говорил либо о "главное - система, не так важно какая именно", либо об объективных, проверяемых преимуществах/недостатках того или иного подхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2006, 22:52 |
|
||
|
Как лучше именовать поля PrimaryKey ?
|
|||
|---|---|---|---|
|
#18+
В свое время очень много писал для БД, PK которой были построены по принципу table_name_id. Очень утомительно было писать и отлаживать конструкции наподобие: Код: plaintext Код: plaintext Код: plaintext особенно если все в команде знают, что tn это общепринятый alias для table_name. Нет разницы между emp_id и emp.id (если нет еще одной таблицы с полем emp_id...), но есть большая разница между, например ii.invoice_item_id и ii.id... А читается так же легко, если ii.id не легче при долгой работе с системой... Особенно учитывая, что полные наименования таблиц таковы, что не всегда условие по join влезает в экран :)... В общем, когда пришло время проектировать свою БД, пришел к выводу, что обозначение PK просто как ID позволит сохранить много времени при дальнейшей работе. Хотя все это весьма и весьма субъективно, кому-то вон венгерская нотация нравится... В общем, как во всех учебниках пишут про стиль: главное чтобы был, был один и удобный для Вас в использовании... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2006, 13:56 |
|
||
|
|

start [/forum/search_topic.php?author=OldOwl&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
416ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
123ms |
get tp. blocked users: |
1ms |
| others: | 921ms |
| total: | 1528ms |

| 0 / 0 |
