291 votes

Conventions de nommage PostgreSQL

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

1 votes

Si nous allons un peu plus loin et que nous nous intéressons à la convention de dénomination générique, je vous recommande vivement de consulter cette réponse : stackoverflow.com/questions/4702728/

415voto

leonbloy Points 27119

En ce qui concerne les noms de tables, la casse, etc., la convention la plus répandue est la suivante :

  • Mots clés SQL : UPPER CASE
  • des identifiants (noms de bases de données, de tables, de colonnes, etc.) : lower_case_with_underscores

Par exemple :

UPDATE my_table SET name = 5;

Ce n'est pas gravé dans la pierre, mais le passage sur identifiants en minuscules est fortement recommandé, IMO. Postgresql traite les identifiants de manière insensible à la casse lorsqu'ils ne sont pas cités (il les met en minuscules en interne), et de manière sensible à la casse lorsqu'ils sont cités ; de nombreuses personnes ne sont pas conscientes de cette idiosyncrasie. En utilisant toujours les minuscules, vous êtes en sécurité. De toute façon, il est acceptable d'utiliser camelCase o PascalCase (ou UPPER_CASE ), pour autant que vous soyez cohérent : soit vous citez toujours les identifiants, soit vous ne les citez jamais (et cela inclut la création du schéma !).

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

Voir aussi quelques discussions aquí , aquí et (pour le SQL général) aquí tous avec plusieurs liens connexes.

Remarque : Postgresql 10 a introduit identity comme un remplacement conforme au langage SQL pour les colonnes série .

0 votes

Existe-t-il des conventions concernant le référencement des types de données en majuscules ou en minuscules, et les fonctions de référence ? (c'est-à-dire regclass o REGCLASS y to_timestamp(0) o TO_TIMESTAMP(0) ) ? Je suppose que nous considérons les types et les fonctions comme des identifiants, et donc en minuscules ?

6 votes

Pour info, la seule idiosyncrasie est que Pg se plie en minuscules, alors que la norme SQL dit qu'il devrait se plier en majuscules. Les SGBD qui ne respectent pas la casse sont ceux qui ne sont pas standardisés.

34 votes

En tant que nouvel utilisateur de Postgres, c'est assez frustrant. Devoir choisir entre taper des guillemets tout le temps ou utiliser une convention de nommage moche, ça craint. Ça craint grave.

48voto

Craig Ringer Points 72371

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

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

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

Si vous vouliez nommer vos tables et fonctions "@MyApp! ""betty"" Shard$42" vous êtes libre de le faire, bien que ce soit pénible de taper partout.

Les principales choses à comprendre sont les suivantes :

  • À moins d'être doublement cités, les identificateurs sont ramenés en minuscules, donc MyTable , MYTABLE y mytable sont tous la même chose, mais "MYTABLE" y "MyTable" sont différentes ;

  • Sauf en cas de double citation :

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

  • Vous devez mettre les mots-clés entre guillemets si vous souhaitez les utiliser comme identifiants.

En pratique, je vous recommande vivement de ne pas utiliser mots-clés comme identifiants. Évitez au moins les mots réservés. Ce n'est pas parce que vous pouvez nommer une table "with" ne veut pas dire que vous devriez.

1 votes

Merci pour le lien vers le document sur règles de dénomination des identifiants . J'ai eu du mal à trouver ce sujet particulier.

4 votes

"Je trouve qu'il est plus facile d'utiliser lower_case_underscore_separated_identifiers "... récemment, j'ai entendu dire que c'était une "affaire de serpent".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X