2010-05-20 46 views
110

¿Dónde puedo encontrar un manual detallado sobre las convenciones de nomenclatura de PostgreSQL? (Nombres de tabla de casos comparada con camellos, secuencias, las claves principales, restricciones, índices, etc ...)Convenciones de nomenclatura de PostgreSQL

+0

Bueno, si vamos a ir un poco más allá y buscar en la convención de nombres genéricos, recomiendo comprobar esta respuesta: http://stackoverflow.com/questions/4702728/tabletional-table-naming-convention/4703155#4703155 – vyegorov

Respuesta

143

En cuanto a los nombres de las tablas, caso, etc., la convención prevalece es:

  • palabras clave de SQL: UPPER CASE
  • nombres (identificadores): lower_case_with_underscores

For example:

UPDATE my_table SET name = 5; 

Esto no está escrito en piedra, pero el bit de identificadores en minúsculas es muy recomendable, IMO. Postgresql trata los identificadores de forma insensible cuando no están citados (en realidad los dobla a minúsculas internamente), y distingue entre mayúsculas y minúsculas cuando se lo cita; muchas personas no son conscientes de esta idiosincrasia. Usando siempre minúsculas estás a salvo. De todos modos, es aceptable usar camelCase o PascalCase (o UPPER_CASE), siempre que sea coherente: o bien siempre cite los identificadores o nunca (¡y esto incluye la creación del esquema!).

No conozco muchas más convenciones o guías de estilo. Las claves sustitutas normalmente se crean a partir de una secuencia (por lo general, con la macro serial); sería conveniente ajustarse a esa denominación para esas secuencias si las creas a mano (tablename_colname_seq).

Consulte también algunos comentarios here, here y (para SQL general) here, todos con varios enlaces relacionados.

+0

¿Hay alguna convención sobre referenciar los tipos de datos en mayúsculas o minúsculas y las funciones de referencia? (es decir, 'regclass' o' REGCLASS' y 'to_timestamp (0)' o 'TO_TIMESTAMP (0)')? Supongo que consideramos los tipos y funciones como identificadores, y por lo tanto, minúsculas. – d11wtq

+2

FWIW, la única idiosincrasia es que Pg se pliega en minúsculas, donde el estándar SQL dice que debe doblar a mayúsculas. Los DBMS que no se pliegan son extraños. –

+1

Como nuevo usuario de Postgres, esto es bastante frustrante. Tener que elegir entre escribir citas todo el tiempo o usar una convención de nombres feos es una mierda. Es una mierda culo. – d512

16

No existe realmente un manual formal, porque no hay un solo estilo o estándar.

Mientras entienda the rules of identifier naming puede usar lo que quiera.

En la práctica, se me hace más fácil de usar lower_case_underscore_separated_identifiers porque no es necesario "Double Quote" en todas partes para preservar caso, espacios, etc.

Si quería nombrar las tablas y funciones "@MyAṕṕ! ""betty"" Shard$42" serías libre de hacer eso, aunque sería doloroso escribir en todas partes.

Las principales cosas a entender son:

  • A menos entre comillas dobles, identificadores distinguen entre mayúsculas y plegarse a minúscula, por lo MyTable, MYTABLE y mytable son la misma cosa, pero "MYTABLE" y "MyTable" son diferente;

  • A menos entre comillas dobles:

    identificadores de SQL y palabras clave deben comenzar con una letra (a-z, pero también letras con signos diacríticos y caracteres no latinos) o un guión bajo (_). Los caracteres subsiguientes en un identificador o palabra clave pueden ser letras, guiones bajos, dígitos (0-9) o signos de dólar ($).

  • Debe utilizar palabras clave de doble cita si desea utilizarlas como identificadores.

En la práctica, le recomiendo encarecidamente que no lo hace uso keywords como identificadores. Al menos evita las palabras reservadas. El hecho de que pueda nombrar una tabla "with" no significa que deba hacerlo.

+0

Gracias por vincular al documento en [rules of identifier naming] (http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS). Tuve dificultad para encontrar ese tema en particular. –

Cuestiones relacionadas