Где я могу найти подробное руководство по соглашениям об именах PostgreSQL? (имена таблиц и регистр верблюдов, последовательности, первичные ключи, ограничения, индексы и т. д.)
Где я могу найти подробное руководство по соглашениям об именах PostgreSQL? (имена таблиц и регистр верблюдов, последовательности, первичные ключи, ограничения, индексы и т. д.)
Ответы:
Что касается имен таблиц, регистра и т. Д., Распространенное соглашение:
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 .
На самом деле нет формального руководства, потому что нет единого стиля или стандарта.
Пока вы понимаете правила именования идентификаторов, вы можете использовать все, что захотите.
На практике мне легче пользоваться, lower_case_underscore_separated_identifiers
потому что им не нужно "Double Quote"
везде сохранять кейс, пробелы и т. Д.
Если бы вы хотели назвать свои таблицы и функции, "@MyAṕṕ! ""betty"" Shard$42"
вы бы могли это сделать, хотя печатать везде было бы больно.
Основные вещи для понимания:
Если не заключить в двойные кавычки, идентификаторы свернуты в нижний регистр, то есть MyTable
, MYTABLE
и mytable
все это одно и то же, но "MYTABLE"
и "MyTable"
разные;
Если не указано в двойных кавычках:
Идентификаторы SQL и ключевые слова должны начинаться с буквы (az, но также и букв с диакритическими знаками и нелатинскими буквами) или подчеркивания (_). Последующими символами в идентификаторе или ключевом слове могут быть буквы, подчеркивания, цифры (0-9) или знаки доллара ($).
Вы должны использовать двойные кавычки, если хотите использовать их в качестве идентификаторов.
На практике я настоятельно рекомендую не использовать ключевые слова в качестве идентификаторов. По крайней мере, избегайте зарезервированных слов. То, что вы можете назвать таблицу "with"
, не означает, что вы должны.
lower_case_underscore_separated_identifiers
» ... недавно я услышал, что это описывается как «случай змеи»