PostgreSQL-Namenskonventionen

191

Wo finde ich ein detailliertes Handbuch zu PostgreSQL-Namenskonventionen? (Tabellennamen vs. Kamelfall, Sequenzen, Primärschlüssel, Einschränkungen, Indizes usw.)

boj
quelle
Nun, wenn wir noch ein bisschen weiter gehen und uns mit der allgemeinen Namenskonvension befassen, empfehle ich dringend, diese Antwort zu überprüfen: stackoverflow.com/questions/4702728/…
vyegorov

Antworten:

249

In Bezug auf Tabellennamen, Groß- und Kleinschreibung usw. gilt folgende Konvention:

  • SQL-Schlüsselwörter: UPPER CASE
  • Namen (Bezeichner): lower_case_with_underscores

Zum Beispiel :

UPDATE my_table SET name = 5;

Dies ist nicht in Stein gemeißelt, aber das bisschen über Bezeichner in Kleinbuchstaben wird dringend empfohlen, IMO. Postgresql behandelt Bezeichner in Groß- und Kleinschreibung, wenn sie nicht in Anführungszeichen gesetzt werden (es faltet sie tatsächlich intern in Kleinbuchstaben) und in Groß- und Kleinschreibung, wenn sie in Anführungszeichen gesetzt werden. Viele Menschen sind sich dieser Eigenart nicht bewusst. Wenn Sie immer Kleinbuchstaben verwenden, sind Sie sicher. Wie auch immer, es ist akzeptabel, camelCaseoder PascalCase(oder UPPER_CASE) zu verwenden, solange Sie konsistent sind: entweder immer oder nie Anführungszeichen (und dies schließt die Schemaerstellung ein!).

Viele weitere Konventionen oder Styleguides sind mir nicht bekannt. Ersatzschlüssel werden normalerweise aus einer Sequenz erstellt (normalerweise mit dem serialMakro). Es ist praktisch, diese Benennung für diese Sequenzen beizubehalten, wenn Sie sie von Hand erstellen ( tablename_colname_seq).

Siehe auch einige Diskussionen hier , hier und (für allgemeines SQL) hier , alle mit mehreren verwandten Links.

Hinweis: In Postgresql 10 wurden identity Spalten als SQL-kompatibler Ersatz für serielle Dateien eingeführt .

leonbloy
quelle
3
FWIW, die einzige Besonderheit ist, dass Pg in Kleinbuchstaben gefaltet wird, wobei der SQL-Standard vorschreibt, dass es in Großbuchstaben gefaltet werden soll. DBMSs, bei denen die Groß- und Kleinschreibung nicht möglich ist, sind die seltsamen, nicht standardmäßigen DBMS.
Craig Ringer
6
Als neuer Benutzer von Postgres ist dies ziemlich frustrierend. Es ist scheiße, ständig zwischen der Eingabe von Anführungszeichen oder der Verwendung einer hässlichen Namenskonvention wählen zu müssen. Es saugt Arsch.
d512
1
@ user1334007 Die Konvention ist nicht hässlich - und lesen Sie den obigen Kommentar von Craig. Und Sie müssen nicht zitieren, wenn Sie beim Erstellen der Tabellen nicht zitiert haben (dh wenn Sie konsistent sind).
Leonbloy
4
@leonbloy, wenn Sie beim Erstellen der Tabelle kein Zitat angeben, werden Ihre Tabellennamen und Feldnamen von Postgres in Kleinbuchstaben geschrieben. Sie können Kamelbuchstaben verwenden, wenn Sie Ihre Abfragen schreiben, aber Ihr Ergebnis zeigt alle Kleinbuchstaben an, was schwer zu lesen ist, wenn Felder aus mehreren Wörtern bestehen (Datum der letzten Aktualisierung). Wenn Sie möchten, dass Ihre Spaltennamen in den Abfrageergebnissen lesbar sind, müssen Sie entweder alles zitieren oder die Groß- und Kleinschreibung verwenden, was meiner Meinung nach hässlich ist. Es wäre viel besser, wenn Postgres Ihre Namen in Ruhe lassen würde und Sie keine Angebote machen müssten.
d512
11
Ich hasse Schlüsselwörter in Großbuchstaben, hasse es einfach, Konvention oder nein. Es gibt keine Fallabhängigkeit in Bezug auf Schlüsselwörter. Ich bevorzuge alle Kleinbuchstaben. Ja, ich weiß, es ist nur eine Präferenz, aber dies ist auch nur ein Kommentar. ;-)
Craig
28

Es gibt nicht wirklich ein formelles Handbuch, weil es keinen einzigen Stil oder Standard gibt.

Solange Sie die Regeln für die Benennung von Bezeichnern verstehen , können Sie alles verwenden, was Sie möchten.

In der Praxis finde ich es einfacher zu bedienen, lower_case_underscore_separated_identifiersweil es nicht "Double Quote"überall notwendig ist, Gehäuse, Räume usw. zu bewahren.

Wenn Sie Ihre Tabellen und Funktionen benennen möchten, können "@MyAṕṕ! ""betty"" Shard$42"Sie dies tun, obwohl es mühsam wäre, überall zu tippen.

Die wichtigsten Dinge zu verstehen sind:

  • Es sei denn , in doppelten Anführungszeichen, Bezeichner sind case-gefaltet in Kleinbuchstaben, so MyTable, MYTABLEund mytablesind alle das Gleiche, aber "MYTABLE"und "MyTable"unterschiedlich sind;

  • Sofern nicht doppelt zitiert:

    SQL-Bezeichner und Schlüsselwörter müssen mit einem Buchstaben (az, aber auch Buchstaben mit diakritischen Zeichen und nicht-lateinischen Buchstaben) oder einem Unterstrich (_) beginnen. Nachfolgende Zeichen in einem Bezeichner oder Schlüsselwort können Buchstaben, Unterstriche, Ziffern (0-9) oder Dollarzeichen ($) sein.

  • Sie müssen Schlüsselwörter in doppelte Anführungszeichen setzen, wenn Sie sie als Bezeichner verwenden möchten.

In der Praxis empfehle ich dringend , dass Sie nicht verwenden Schlüsselwörter als Bezeichner. Vermeiden Sie zumindest reservierte Wörter. Nur weil Sie eine Tabelle benennen können, "with"heißt das nicht, dass Sie es sollten.

Craig Ringer
quelle
1
Vielen Dank für die Verknüpfung mit dem Dokument zu den Regeln für die Benennung von Bezeichnern . Ich hatte Schwierigkeiten, dieses spezielle Thema zu finden.
Basil Bourque
1
"Ich finde es einfacher zu bedienen lower_case_underscore_separated_identifiers" ... vor kurzem hörte ich dies als "Schlangenfall" beschrieben
bvj