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 ...)
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
UPDATE my_table SET name = 5;
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
ou PascalCase
(ou UPPER_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 .
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
e mytable
são todos a mesma coisa, mas "MYTABLE"
e "MyTable"
são diferentes;
A menos que entre aspas:
Identificadores SQL e palavras-chave devem começar com uma letra (az, mas também letras com marcas diacríticas e letras que não sejam latinas) ou um sublinhado (_). Os caracteres subsequentes em um identificador ou palavra-chave podem ser letras, sublinhados, dígitos (0 a 9) ou cifrões ($).
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.
lower_case_underscore_separated_identifiers
" ... Recentemente, ouvi isso descrito como "caso de serpente"