Где я могу найти подробное руководство по соглашениям об именах PostgreSQL? (имена таблиц и случай верблюда, последовательности, первичные ключи, ограничения, индексы и т.д.)
Что касается имен таблиц, case и т.д., то распространенное соглашение:
UPPER CASE
lower_case_with_underscores
UPDATE my_table SET name = 5;
Это не написано на камне, но бит о идентификаторах в нижнем регистре настоятельно рекомендуется, ИМО. Postgresql обрабатывает идентификаторы без учета регистра, если они не цитируются (это фактически сводит их к внутреннему регистру), а случай чувствителен при цитировании; многие люди не знают об этой идиосинкразии. Используя всегда строчные буквы, вы в безопасности. Во всяком случае, допустимо использовать camelCase
или PascalCase
(или UPPER_CASE
), если вы согласны: либо кодовые идентификаторы всегда или никогда (и это включает в себя создание схемы!).
Я не знаю многих других конвенций или руководств по стилю. Суррогатные ключи обычно производятся из последовательности (обычно с макросом serial
), было бы удобно придерживаться этого наименования для этих последовательностей, если вы создаете их вручную (tablename_colname_seq
).
См. также обсуждение здесь, здесь и ( для общего SQL) здесь, все с несколькими связанными ссылками.
regclass
или REGCLASS
и to_timestamp(0)
или TO_TIMESTAMP(0)
)? Я предполагаю, что мы рассматриваем типы и функции как идентификаторы и, следовательно, строчные буквы
На самом деле нет официального руководства, потому что нет единого стиля или стандарта.
Пока вы понимаете правила именования имен, вы можете использовать все, что вам нравится.
На практике мне легче использовать lower_case_underscore_separated_identifiers
, потому что нет необходимости в "Double Quote"
их везде, чтобы сохранить регистр, пробелы и т.д.
Если вы хотите назвать свои таблицы и функции "@MyAṕṕ! ""betty"" Shard$42"
, вы были бы свободны в этом, хотя было бы больно печатать везде.
Основные вещи для понимания:
Если идентификаторы с двойными кавычками не сбрасываются в регистр в нижнем регистре, то MyTable
, MyTable
и MyTable
- одно и то же, но "MYTABLE"
и "MYTABLE"
отличаются;
Без двойных кавычек:
Идентификаторы SQL и ключевые слова должны начинаться с буквы (a-z, а также букв с диакритическими знаками и нелатинских букв) или подчеркивания (_). Последующие символы в идентификаторе или ключевом слове могут быть буквами, символами подчеркивания, цифрами (0-9) или знаками доллара ($).
Вы должны использовать двойные кавычки, если хотите использовать их как идентификаторы.
На практике я настоятельно рекомендую не использовать keywords в качестве идентификаторов. По крайней мере, избегайте зарезервированных слов. Просто потому, что вы можете назвать таблицу "with"
, это не значит, что вы должны.