Convenzioni di denominazione PostgreSQL


193

Dove posso trovare un manuale dettagliato sulle convenzioni di denominazione PostgreSQL? (nomi di tabella vs. caso di cammello, sequenze, chiavi primarie, vincoli, indici, ecc ...)


Beh, se ci andremo un po 'oltre e sguardo generico convension denominazione Consiglio vivamente il check questa risposta: stackoverflow.com/questions/4702728/...
vyegorov

Risposte:


254

Per quanto riguarda i nomi delle tabelle, i casi, ecc., La convenzione prevalente è:

  • Parole chiave SQL: UPPER CASE
  • nomi (identificatori): lower_case_with_underscores

Per esempio :

UPDATE my_table SET name = 5;

Questo non è scritto in pietra, ma la parte relativa agli identificatori in minuscolo è altamente raccomandata, IMO. Postgresql tratta gli identificatori senza maiuscole e minuscole quando non sono citati (li piega in realtà internamente in minuscolo) e, se citati, in modo sensibile; molte persone non sono consapevoli di questa idiosincrasia. Usando sempre minuscole sei al sicuro. Ad ogni modo, è accettabile usare camelCaseo PascalCase(o UPPER_CASE), purché tu sia coerente: o cita sempre gli identificatori (e questo include la creazione dello schema!).

Non sono a conoscenza di molte altre convenzioni o guide di stile. Le chiavi surrogate sono normalmente fatte da una sequenza (di solito con la serialmacro), sarebbe conveniente attenersi a quel nome per quelle sequenze se le crei manualmente ( tablename_colname_seq).

Vedi anche alcune discussioni qui , qui e (per SQL generale) qui , tutte con diversi collegamenti correlati.

Nota: Postgresql 10 ha introdotto le identity colonne come un sostituto conforme a SQL per seriale .


3
FWIW, l'unica idiosincrasia è che Pg si piega in minuscolo, dove lo standard SQL dice che dovrebbe piegarsi in maiuscolo. I DBMS che non riescono a piegare le maiuscole sono quelli strani non standard.
Craig Ringer

6
Come nuovo utente di Postgres, questo è piuttosto frustrante. Dover scegliere tra digitare virgolette continuamente o usare una brutta convenzione di denominazione fa schifo. Fa schifo culo.
d512,

1
@ user1334007 La convenzione non è brutta - e leggi il commento di Craig sopra. E non c'è bisogno di citare se non hai citato quando hai creato le tabelle (cioè, se sei coerente).
leonbloy,

4
@leonbloy, se non crei un preventivo quando crei la tabella, Postgres metterà in minuscolo i nomi delle tabelle e dei campi. Puoi usare il caso cammello quando scrivi le tue domande, ma il risultato mostrerà tutte le lettere minuscole, che è difficile da leggere quando i campi sono composti da più parole (ultimo aggiornamento). Se vuoi che i nomi delle tue colonne siano leggibili nei risultati della query, devi citare tutto o usare il caso serpente, che, IMO, è brutto. Sarebbe molto meglio se Postgres lasciasse i tuoi nomi da soli e non ti richiedesse di fornire preventivi.
d512

11
Odio le parole chiave in maiuscolo, lo odio, convenzione o no. Non c'è dipendenza tra maiuscole e minuscole rispetto alle parole chiave. Preferisco tutte le lettere minuscole. Sì, lo so che è una mera preferenza, ma anche questo è un semplice commento. ;-)
Craig il

28

Non esiste un manuale formale, perché non esiste uno stile o uno standard unico.

Finché capisci le regole di denominazione degli identificativi puoi usare quello che vuoi.

In pratica, trovo più facile da usare lower_case_underscore_separated_identifiersperché non è necessario per "Double Quote"loro ovunque per conservare case, spazi, ecc.

Se vuoi nominare le tue tabelle e funzioni "@MyAṕṕ! ""betty"" Shard$42" saresti libero di farlo, anche se sarebbe difficile digitare ovunque.

Le cose principali da capire sono:

  • A meno che non siano racchiusi tra virgolette doppie, gli identificatori sono piegati in minuscolo in maiuscolo, quindi MyTable, MYTABLEe mytablesono tutti la stessa cosa, ma "MYTABLE"e"MyTable" sono diversi;

  • Salvo virgolette:

    Gli identificatori SQL e le parole chiave devono iniziare con una lettera (az, ma anche lettere con segni diacritici e lettere non latine) o un trattino basso (_). I caratteri successivi in ​​un identificatore o parola chiave possono essere lettere, caratteri di sottolineatura, cifre (0-9) o segni di dollaro ($).

  • Devi citare due parole chiave se desideri utilizzarle come identificatori.

In pratica, consiglio vivamente di non utilizzare parole chiave come identificatori. Almeno evita le parole riservate. Solo perché puoi nominare una tabella "with"non significa che dovresti.


1
Grazie per il collegamento al documento sulle regole di denominazione dell'identificatore . Ho avuto difficoltà a trovare quel particolare argomento.
Basil Bourque,

1
"Trovo più facile da usare lower_case_underscore_separated_identifiers" ... recentemente, ho sentito questo descritto come "caso di serpente"
bvj
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.