Соглашения об именах PostgreSQL

193

Где я могу найти подробное руководство по соглашениям об именах PostgreSQL? (имена таблиц и регистр верблюдов, последовательности, первичные ключи, ограничения, индексы и т. д.)

БЯ
источник
Хорошо, если мы пойдем немного дальше и посмотрим на общее соглашение об именах, я настоятельно рекомендую проверить этот ответ: stackoverflow.com/questions/4702728/…
vyegorov

Ответы:

254

Что касается имен таблиц, регистра и т. Д., Распространенное соглашение:

  • Ключевые слова SQL: UPPER CASE
  • имена (идентификаторы): lower_case_with_underscores

Например :

UPDATE my_table SET name = 5;

Это не написано в камне, но бит об идентификаторах в нижнем регистре настоятельно рекомендуется, IMO. Postgresql обрабатывает идентификаторы без учета регистра, когда они не заключены в кавычки (он фактически сворачивает их в нижний регистр внутри), и с учетом регистра при цитировании; многие люди не знают об этой идиосинкразии. Используя всегда строчные буквы, вы в безопасности. В любом случае, допустимо использовать camelCaseили PascalCase(или UPPER_CASE), если вы последовательны: либо всегда указывайте идентификаторы, либо никогда (и это включает создание схемы!).

Я не знаю о многих других соглашениях или руководствах по стилю. Суррогатные ключи обычно создаются из последовательности (обычно с serialмакросом), было бы удобно придерживаться этого имени для этих последовательностей, если вы создаете их вручную ( tablename_colname_seq).

Смотрите также некоторые обсуждения здесь , здесь и (для общего SQL) здесь , все с несколькими связанными ссылками.

Примечание: Postgresql 10 представил identity столбцы как замену последовательного кода на SQL .

leonbloy
источник
3
FWIW, единственная особенность состоит в том, что Pg сворачивается в нижний регистр, где стандарт SQL говорит, что он должен сворачиваться в верхний регистр. СУБД, которые не в состоянии свернуть, являются странными нестандартными.
Крейг Рингер,
6
Как новый пользователь Postgres, это довольно сложно. Необходимость выбора между вводом кавычек все время или использованием уродливого соглашения об именах - отстой. Это отстой.
d512
1
@ user1334007 Соглашение не безобразно - и прочитайте комментарий Крейга выше. И нет необходимости цитировать, если вы не цитировали при создании таблиц (то есть, если вы последовательны).
Леонблой
4
@leonbloy, если вы не заключите в кавычки при создании таблицы, то Postgres будет использовать строчные буквы для имен таблиц и полей. Вы можете использовать случай верблюда, когда вы пишете свои запросы, но ваш результат будет отображаться в нижнем регистре, который трудно прочитать, когда поля состоят из нескольких слов (lastupdateddate). Если вы хотите, чтобы имена ваших столбцов были читаемыми в результатах запроса, вы должны либо заключить в кавычки все, либо использовать случай змеи, что, IMO, ужасно. Было бы намного лучше, если бы Postgres оставил ваши имена в покое и не требовал, чтобы вы указывали цитаты.
d512
11
Я ненавижу ключевые слова в верхнем регистре, просто ненавижу это, соглашение или нет. В отношении ключевых слов нет зависимости от регистра. Я предпочитаю все строчные. Да, я знаю, что это просто предпочтение, но это также простой комментарий. ;-)
Крейг
28

На самом деле нет формального руководства, потому что нет единого стиля или стандарта.

Пока вы понимаете правила именования идентификаторов, вы можете использовать все, что захотите.

На практике мне легче пользоваться, lower_case_underscore_separated_identifiersпотому что им не нужно "Double Quote"везде сохранять кейс, пробелы и т. Д.

Если бы вы хотели назвать свои таблицы и функции, "@MyAṕṕ! ""betty"" Shard$42"вы бы могли это сделать, хотя печатать везде было бы больно.

Основные вещи для понимания:

  • Если не заключить в двойные кавычки, идентификаторы свернуты в нижний регистр, то есть MyTable, MYTABLEи mytableвсе это одно и то же, но "MYTABLE"и "MyTable"разные;

  • Если не указано в двойных кавычках:

    Идентификаторы SQL и ключевые слова должны начинаться с буквы (az, но также и букв с диакритическими знаками и нелатинскими буквами) или подчеркивания (_). Последующими символами в идентификаторе или ключевом слове могут быть буквы, подчеркивания, цифры (0-9) или знаки доллара ($).

  • Вы должны использовать двойные кавычки, если хотите использовать их в качестве идентификаторов.

На практике я настоятельно рекомендую не использовать ключевые слова в качестве идентификаторов. По крайней мере, избегайте зарезервированных слов. То, что вы можете назвать таблицу "with", не означает, что вы должны.

Крейг Рингер
источник
1
Спасибо за ссылку на документ по правилам именования идентификаторов . Мне было трудно найти эту конкретную тему.
Василий Бурк
1
«Мне легче пользоваться lower_case_underscore_separated_identifiers» ... недавно я услышал, что это описывается как «случай змеи»
Bvj