Convenções de nomenclatura do PostgreSQL

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 ...)

boj
fonte
Bem, se vamos ir um pouco mais longe e olhar para convension genérica de nomes que eu recomendo verificar esta resposta: stackoverflow.com/questions/4702728/...
vyegorov

Respostas:

249

Em relação aos nomes das tabelas, maiúsculas e minúsculas, etc., a convenção predominante é:

  • Palavras-chave SQL: UPPER CASE
  • nomes (identificadores): lower_case_with_underscores

Por exemplo :

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 camelCaseou 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 serialmacro); 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 .

leonbloy
fonte
3
FWIW, a única idiossincrasia é que Pg se dobra para minúsculas, onde o padrão SQL diz que deve dobrar para maiúsculas. Os DBMSs que não conseguem dobrar maiúsculas e minúsculas são os estranhos e não padronizados.
Craig Ringer
6
Como um novo usuário do Postgres, isso é bastante frustrante. Ter que escolher entre digitar aspas o tempo todo ou usar uma convenção de nomenclatura feia é uma porcaria. É uma merda.
D512
1
@ user1334007 A convenção não é feia - e leia o comentário de Craig acima. E não há necessidade de citar se você não citou ao criar as tabelas (ou seja, se você for consistente).
Leonbloy
4
@leonbloy, se você não citar ao criar a tabela, o Postgres fará minúsculas os nomes de suas tabelas e de campos. Você pode usar camel case ao escrever suas consultas, mas o resultado será exibido em letras minúsculas, o que é difícil de ler quando os campos consistem em várias palavras (lastupdateddate). Se você deseja que os nomes das suas colunas sejam legíveis nos resultados da consulta, é necessário citar tudo ou usar snake case, que, na IMO, é feio. Seria muito melhor se o Postgres deixasse seus nomes em paz e não exigisse que você fornecesse cotações.
d512 30/01
11
Eu odeio palavras-chave em maiúsculas, odeio, convenção ou não. Não há dependência de caso em relação às palavras-chave. Eu prefiro todas as letras minúsculas. Sim, eu sei que é uma mera preferência, mas este também é um mero comentário. ;-)
Craig
28

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_identifierslo 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, MYTABLEe mytablesã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.

Craig Ringer
fonte
1
Obrigado por vincular ao documento sobre regras de nomeação de identificadores . Tive dificuldade em encontrar esse tópico em particular.
manjericão Bourque
1
"Acho que é mais fácil de usar lower_case_underscore_separated_identifiers" ... Recentemente, ouvi isso descrito como "caso de serpente"
BVJ