Onde posso encontrar um manual detalhado sobre as convenções de nomenclatura do PostgreSQL? (nomes de tabelas vs. maiúsculas e minúsculas, sequências, chaves primárias, restrições, índices, etc ...)
191
Onde posso encontrar um manual detalhado sobre as convenções de nomenclatura do PostgreSQL? (nomes de tabelas vs. maiúsculas e minúsculas, sequências, chaves primárias, restrições, índices, etc ...)
Respostas:
Em relação aos nomes das tabelas, maiúsculas e minúsculas, etc., a convenção predominante é:
UPPER CASE
lower_case_with_underscores
Por exemplo :
Isso não está escrito em pedra, mas o pouco sobre identificadores em letras minúsculas é altamente recomendado, IMO. O Postgresql trata os identificadores em maiúsculas e minúsculas quando não estão entre aspas (na verdade, os dobra em minúsculas internamente) e em maiúsculas e minúsculas quando em aspas; muitas pessoas não estão cientes dessa idiossincrasia. Sempre usando letras minúsculas, você está seguro. De qualquer forma, é aceitável usar
camelCase
ouPascalCase
(ouUPPER_CASE
), desde que você seja consistente: identifique aspas sempre ou nunca (e isso inclui a criação do esquema!).Não conheço muitas outras convenções ou guias de estilo. As chaves substitutas são normalmente feitas de uma sequência (geralmente com a
serial
macro); seria conveniente manter a nomeação dessas seqüências se você as criar manualmente (tablename_colname_seq
).Veja também algumas discussões aqui , aqui e (para SQL geral) aqui , todos com vários links relacionados.
Nota: O Postgresql 10 introduziu
identity
colunas como uma substituição compatível com SQL para serial .fonte
Não existe realmente um manual formal, porque não existe um estilo ou padrão único.
Contanto que você entenda as regras de nomeação de identificadores, poderá usar o que quiser.
Na prática, acho mais fácil usá-
lower_case_underscore_separated_identifiers
lo porque não é necessário em"Double Quote"
todos os lugares para preservar estojo, espaços etc.Se você quisesse nomear suas tabelas e funções,
"@MyAṕṕ! ""betty"" Shard$42"
estaria livre para fazer isso, embora seja difícil digitar em qualquer lugar.As principais coisas a entender são:
A menos que entre aspas, identificadores são case-dobrado para minúsculo, então
MyTable
,MYTABLE
emytable
são todos a mesma coisa, mas"MYTABLE"
e"MyTable"
são diferentes;A menos que entre aspas:
Você deve colocar aspas duplas nas palavras-chave se desejar usá-las como identificadores.
Na prática, recomendo fortemente que você não use palavras-chave como identificadores. Pelo menos evite palavras reservadas. Só porque você pode nomear uma tabela
"with"
não significa que deveria.fonte
lower_case_underscore_separated_identifiers
" ... Recentemente, ouvi isso descrito como "caso de serpente"