web-dev-qa-db-fra.com

Conventions de nommage PostgreSQL

Où puis-je trouver un manuel détaillé sur les conventions de nommage PostgreSQL? (noms de table, casel, séquences, clés primaires, contraintes, index, etc ...)

159
boj

En ce qui concerne les noms de tables, les cas, etc., la convention qui prévaut est la suivante:

  • Mots-clés SQL: UPPER CASE
  • noms (identifiants): lower_case_with_underscores

Par exemple :

UPDATE my_table SET name = 5;

Ceci n’est pas écrit dans la pierre, mais la partie sur les identifiants en minuscule est vivement recommandée, IMO. Postgresql traite les identifiants de manière insensible à la casse lorsqu'ils ne sont pas cités (il les plie en fait en minuscules de manière interne), et à la casse lorsqu'ils sont cités; beaucoup de gens ne sont pas conscients de cette idiosyncrasie. En utilisant toujours les minuscules, vous êtes en sécurité. Quoi qu'il en soit, il est acceptable d'utiliser camelCase ou PascalCase (ou UPPER_CASE), tant que vous êtes cohérent: identifiez toujours ou jamais les identificateurs de citation (et cela inclut la création de schéma!).

Je ne connais pas beaucoup plus de conventions ou de guides de style. Les clés de substitution sont normalement créées à partir d'une séquence (généralement avec la macro serial ), il serait pratique de s'en tenir à la dénomination de ces séquences si vous les créez à la main (tablename_colname_seq).

Voir aussi quelques discussions ici , ici et (pour SQL général) ici , toutes avec plusieurs liens connexes.

206
leonbloy

Il n'y a pas vraiment de manuel officiel, car il n'y a pas de style ni de norme.

Tant que vous comprenez les règles de nommage des identifiants vous pouvez utiliser ce que vous voulez.

En pratique, je trouve plus facile d’utiliser lower_case_underscore_separated_identifiers Car il n’est pas nécessaire de les "Double Quote" Partout pour préserver la casse, les espaces, etc.

Si vous vouliez nommer vos tables et fonctions "@MyAṕṕ! ""betty"" Shard$42", Vous seriez libre de le faire, même s'il serait difficile de taper n'importe où.

Les principales choses à comprendre sont:

  • A moins que les guillemets ne soient cités deux fois, les identifiants sont pliés en minuscules. MyTable, MYTABLE et mytable sont donc identiques, mais "MYTABLE" Et "MyTable" Sont différents;

  • À moins que double cité:

    Les identifiants SQL et les mots clés doivent commencer par une lettre (a-z, mais aussi des lettres avec des signes diacritiques et des lettres non latines) ou un trait de soulignement (_). Les caractères suivants dans un identifiant ou une clé Word peuvent être des lettres, des traits de soulignement, des chiffres (0 à 9) ou des signes dollar ($).

  • Vous devez double-citer les mots-clés si vous souhaitez les utiliser comme identificateurs.

En pratique, je vous recommande fortement de ne pas utiliser mots-clés comme identificateurs. Évite au moins les mots réservés. Le fait de nommer une table "with" Ne signifie pas que vous devriez le faire.

22
Craig Ringer