Convenciones de nomenclatura de PostgreSQL

193

¿Dónde puedo encontrar un manual detallado sobre las convenciones de nomenclatura de PostgreSQL? (nombres de tabla vs. caso de camello, secuencias, claves primarias, restricciones, índices, etc.)

boj
fuente
Bueno, si vamos un poco más allá y analizamos la convección genérica de nombres, recomiendo comprobar esta respuesta: stackoverflow.com/questions/4702728/…
vyegorov

Respuestas:

254

En cuanto a los nombres de tablas, casos, etc., la convención predominante es:

  • Palabras clave SQL: UPPER CASE
  • nombres (identificadores): lower_case_with_underscores

Por ejemplo :

UPDATE my_table SET name = 5;

Esto no está escrito en piedra, pero el bit sobre identificadores en minúsculas es muy recomendable, OMI. Postgresql trata los identificadores entre mayúsculas y minúsculas cuando no se citan (en realidad los dobla a minúsculas internamente) y entre mayúsculas y minúsculas cuando se citan; Muchas personas no son conscientes de esta idiosincrasia. Usando siempre minúsculas estás a salvo. De todos modos, es aceptable usar camelCaseo PascalCase(o UPPER_CASE), siempre y cuando sea coherente: ya sea entre comillas siempre 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 están hechas de una secuencia (generalmente con la serialmacro), sería conveniente mantener ese nombre para esas secuencias si las crea a mano ( tablename_colname_seq).

Vea también alguna discusión aquí , aquí y (para SQL general) aquí , todo con varios enlaces relacionados.

Nota: Postgresql 10 introdujo identity columnas como un reemplazo compatible con SQL para serial .

leonbloy
fuente
3
FWIW, la única idiosincrasia es que Pg se pliega a minúsculas, donde el estándar SQL dice que debería plegarse a mayúsculas. Los DBMS que no se pliegan en mayúsculas son los extraños no estándar.
Craig Ringer
66
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 apesta. Es una mierda el culo.
d512
1
@ user1334007 La convención no es fea, y lea el comentario de Craig arriba. Y no hay necesidad de citar si no citó cuando creó las tablas (es decir, si es coherente).
leonbloy
44
@leonbloy, si no cotiza cuando crea la tabla, Postgres en minúscula los nombres de la tabla y los nombres de los campos. Puede usar mayúsculas y minúsculas cuando escriba sus consultas, pero su resultado se mostrará en minúsculas, lo cual es difícil de leer cuando los campos consisten en varias palabras (última actualización). Si desea que los nombres de sus columnas sean legibles en los resultados de la consulta, debe citar todo o usar mayúsculas y minúsculas, lo cual, en mi opinión, es feo. Sería mucho mejor si Postgres dejara solo sus nombres y no requiriera que proporcione presupuestos.
d512
11
Odio las palabras clave en mayúsculas, solo odio, convención o no. No hay dependencia de mayúsculas y minúsculas con respecto a las palabras clave. Prefiero todo en minúsculas. Sí, sé que es una mera preferencia, pero esto también es un simple comentario. ;-)
Craig
28

Realmente no hay un manual formal, porque no hay un estilo único o estándar.

Siempre que comprenda las reglas de denominación de identificadores , puede usar lo que quiera.

En la práctica, me resulta más fácil de usar lower_case_underscore_separated_identifiersporque no es necesario para "Double Quote"ellos en todas partes preservar mayúsculas y minúsculas, espacios, etc.

Si quisieras nombrar tus tablas y funciones "@MyAṕṕ! ""betty"" Shard$42", serías libre de hacerlo, aunque sería difícil escribir en todas partes.

Los principales puntos a entender son:

  • A no ser citado doble, identificadores distinguen entre mayúsculas y plegada a minúsculas, por lo que MyTable, MYTABLEy mytableson la misma cosa, pero "MYTABLE"y "MyTable"son diferentes;

  • A menos que sea doblemente citado:

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

  • Debe comillas dobles las palabras clave si desea utilizarlas como identificadores.

En la práctica, le recomiendo que no utilice palabras clave como identificadores. Al menos evite las palabras reservadas. El hecho de que pueda nombrar una tabla "with"no significa que deba hacerlo.

Craig Ringer
fuente
1
Gracias por vincularse al documento sobre reglas de denominación de identificadores . Tuve dificultades para encontrar ese tema en particular.
Basil Bourque
1
"Me resulta más fácil de usar lower_case_underscore_separated_identifiers" ... recientemente, escuché esto descrito como "caso de serpiente"
bvj