Где я могу найти подробное руководство по соглашениям об именах PostgreSQL? (имена таблиц и регистр верблюдов, последовательности, первичные ключи, ограничения, индексы и т. д.)
193
Где я могу найти подробное руководство по соглашениям об именах PostgreSQL? (имена таблиц и регистр верблюдов, последовательности, первичные ключи, ограничения, индексы и т. д.)
Ответы:
Что касается имен таблиц, регистра и т. Д., Распространенное соглашение:
UPPER CASE
lower_case_with_underscores
Например :
Это не написано в камне, но бит об идентификаторах в нижнем регистре настоятельно рекомендуется, IMO. Postgresql обрабатывает идентификаторы без учета регистра, когда они не заключены в кавычки (он фактически сворачивает их в нижний регистр внутри), и с учетом регистра при цитировании; многие люди не знают об этой идиосинкразии. Используя всегда строчные буквы, вы в безопасности. В любом случае, допустимо использовать
camelCase
илиPascalCase
(илиUPPER_CASE
), если вы последовательны: либо всегда указывайте идентификаторы, либо никогда (и это включает создание схемы!).Я не знаю о многих других соглашениях или руководствах по стилю. Суррогатные ключи обычно создаются из последовательности (обычно с
serial
макросом), было бы удобно придерживаться этого имени для этих последовательностей, если вы создаете их вручную (tablename_colname_seq
).Смотрите также некоторые обсуждения здесь , здесь и (для общего SQL) здесь , все с несколькими связанными ссылками.
Примечание: Postgresql 10 представил
identity
столбцы как замену последовательного кода на SQL .источник
На самом деле нет формального руководства, потому что нет единого стиля или стандарта.
Пока вы понимаете правила именования идентификаторов, вы можете использовать все, что захотите.
На практике мне легче пользоваться,
lower_case_underscore_separated_identifiers
потому что им не нужно"Double Quote"
везде сохранять кейс, пробелы и т. Д.Если бы вы хотели назвать свои таблицы и функции,
"@MyAṕṕ! ""betty"" Shard$42"
вы бы могли это сделать, хотя печатать везде было бы больно.Основные вещи для понимания:
Если не заключить в двойные кавычки, идентификаторы свернуты в нижний регистр, то есть
MyTable
,MYTABLE
иmytable
все это одно и то же, но"MYTABLE"
и"MyTable"
разные;Если не указано в двойных кавычках:
Вы должны использовать двойные кавычки, если хотите использовать их в качестве идентификаторов.
На практике я настоятельно рекомендую не использовать ключевые слова в качестве идентификаторов. По крайней мере, избегайте зарезервированных слов. То, что вы можете назвать таблицу
"with"
, не означает, что вы должны.источник
lower_case_underscore_separated_identifiers
» ... недавно я услышал, что это описывается как «случай змеи»