Offizielle PostgreSQL-Kapitalisierungskonventionen [geschlossen]

14

Gibt es eine offizielle PostreSQL-Konvention zur Großschreibung von DB-, Tabellen- und Feldnamen?

Die Beispiele auf der offiziellen Website deuten auf eine _Trennung von Kleinbuchstaben und Wörtern hin, und ich frage mich, ob diese Richtlinie offiziell ist.

CREATE TABLE films (
    code        char(5) CONSTRAINT firstkey PRIMARY KEY,
    title       varchar(40) NOT NULL,
    did         integer NOT NULL,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute
);
Adam Matan
quelle
1
Überprüfen Sie auch diesen Teil der Dokumentation über Bezeichner
ypercubeᵀᴹ

Antworten:

18

Ich werde im Grunde genommen Veraces Kommentare widerspiegeln und dies so formulieren, dass es halb amtlich ist:

Es gibt keine Best Practice , die alle Umstände abdeckt. Im Folgenden werden die folgenden Annahmen getroffen (und was zu tun ist, wenn Sie dies nicht getan haben):

  • Sie haben dies bereits mit Ihrem Team besprochen (Menschen, die alleine arbeiten, müssen sich oft nur entscheiden)
  • Es gibt noch keine formalisierte Stildefinition für SQL in Ihrem Team (ansonsten würden Sie uns nicht fragen)
  • Es gibt keine formalisierte Stildefinition für Code. (Befolgen Sie die gleichen Grundkonventionen, die bereits für andere Sprachen festgelegt wurden, und formalisieren Sie einen Stil.)

Der Rest ist also ein wenig meinungsbewusst, basiert aber auf Erfahrung

  1. Wenn es um Tabellennamen geht
    1. Sie sollten sich für einzelne Entitätsnamen entscheiden (dies erleichtert die Dokumentation)
    2. Sie sollten hier Pascal Case verwenden
  2. Wenn es um Feldnamen geht
    1. Verwenden Sie camelCase für Ihre Feldnamen
    2. Verwenden Sie kurze Singularnamen, es sei denn, die Definition ergibt definitiv einen Sinn als Plural (dies ist so gut wie nie der Fall).
  3. Wenn es um Ihre eigenen Funktions- oder Stored Procedure-Namen geht
    1. Verwenden Sie underscore_separation
    2. Verwenden Sie für die Parametrierung die Feldbezeichnung
  4. Wenn es um eingebaute Datenbankfunktionen oder Sprachnamen geht (zB SELECT)
    1. Verwenden Sie ALLE GROSSBUCHSTABEN, es sei denn, eine Großschreibung ist erforderlich
    2. Kennen Sie die APIs für Ihre Sprache, um zu wissen, was sinnvoll oder erforderlich ist
  5. Wenn es um Abstand geht
    1. Viele Leute verwenden Spaltenausrichtung für Schlüsselwörter und Einrückung für Dinge, die keine Schlüsselwörter sind
    2. Viele Leute verwenden Kommas am Anfang der Zeile, wenn die Felder in jeder Zeile getrennt sind (dies erleichtert das Auskommentieren eines bestimmten Feldes aus einer Auswahlliste).
    3. Verwenden Sie niemals Leerzeichen als Teil der Namen von Dingen, auch nicht für Rückgabewert-Header.
  6. Wenn es um Zeichensetzung geht
    1. Klammern - BENUTZEN SIE SIE. Sie sind KOSTENLOS. Ich verspreche.
    2. Semikolons - BENUTZEN SIE SIE. Sie werden dich nicht brechen. Sie zwingen Sie, Ihren Code auszudenken. Und sie sind gute Hygiene.
    3. Carriage Returns - Wieder einmal sind sie kostenlos ;-) Und machen Sie Ihren Code lesbar.

Sie sollten auch berücksichtigen, dass die Community für Postgres beim Versuch, einen allgemeinen Styleguide anzuwenden, im Allgemeinen nicht camelCase oder PascalCase verwendet, sondern underscore_separation. Das wirklich wichtige ist, sicherzustellen, dass Sie überall einen bestimmten Stil festlegen und verwenden, um konsistent zu sein .

pro Marke
quelle
3
+1 für "Das wirklich Wichtige ist, sicherzustellen, dass Sie überall einen bestimmten Stil festlegen und verwenden, um konsistent zu sein." Konsistenz ist der Schlüssel. Ohne sie muss man über Dinge nachdenken, an die man niemals denken sollte.
Max Vernon
4
Nun, camelCase und PascalCase in PostgreSQL sind ein bisschen schmerzhaft. Sie müssen diese zitieren, wenn Sie die Namen wirklich so haben möchten, sonst schreibt das System sie stillschweigend in Kleinbuchstaben (ich schrieb fast decapitalize, welche Assoziationen es auch erregen mag).
Dezso
Was ist mit Datenbanknamen? Soll ich database_name, database-name, DatabaseName, databaseName, usw.?
ma11hew28
1
Ist diese Antwort tatsächlich für PostgreSQL? Wenn Sie den Rat geben, PascalCase für Tabellennamen in einer PG-spezifischen Antwort zu verwenden, sollten Sie meiner Meinung nach erwähnen, (a) wie Sie mit der Tatsache umgehen sollen, dass die meisten Beispiele Schlüsselwörter in Kleinbuchstaben verwenden, und (b) ob Sie Tabellennamen zitieren oder zulassen PG falten sie in Kleinbuchstaben.
AndreKR
@AndreKR hier ist die Sache: Ich erwarte, dass Softwareentwickler erwachsen sind, wissen, wie man die Dokumentation liest und mit ihrem Team besprechen, wie man Code konsistent schreibt. Diese Antwort ist Community-Wiki, das heißt, jeder kann sie bearbeiten und verbessern. Ich kann nicht genau sagen, dass dies der einzige Weg ist, und nur weil einige Leute Beispiele in Kleinbuchstaben angeben, heißt das nicht, dass dies der einzige Weg im Leben ist. Du musst deinen eigenen Weg finden, was der Geist dieser Antwort war. Sie können diese Community-Antwort jederzeit bearbeiten, um sie zu verbessern. Vielen Dank!
Jcolebrand
4

Eine schnelle Google-Suche zeigt viele Websites mit Best Practices. Ich würde nur zwei Dinge sagen - NIE Leerzeichen "My Table Name" verwenden (Portierung wird aufgrund unterschiedlicher Escape-Mechanismen unmöglich; dasselbe gilt für nicht-alphanumerische Zeichen). Bei solchen Mechanismen muss man normalerweise auch die Groß- und Kleinschreibung beachten. Es gibt genug Buchstaben und Wörter in der englischen (oder Ihrer eigenen) Sprache und die Länge der Bezeichner ist lang genug (ich kenne kein System mit bezeichner_länge <32, PostgreSQL ist 64). Verwenden Sie niemals SQL-Schlüsselwörter (die sich je nach RDBMS unterscheiden), die dasselbe tun.

Aussagen wie

SELECT "Field" FROM "Table";

kann gültig sein! Das absolut Entscheidende ist, eine klare und relativ einfache Konvention zu haben und sich dann daran zu halten. Wie Sie herausfinden, haben die Menschen unterschiedliche Meinungen - lesen Sie das Thema durch und finden Sie heraus, was für Sie "richtig" ist. Siehe diese Seiten 1 , 2 , 3 , 4 , 5 , ... (es gibt noch viele mehr).

Vérace
quelle
Vielen Dank, ich bin auf viele meiner eigenen Suchanfragen gestoßen. Ich wollte wissen, ob es einen offiziellen Styleguide gibt.
Adam Matan
Es gibt viele Praktiker auf beiden Seiten der Debatte (singular_table_name / plural_table_name), deren Meinungen zu anderen Bereichen ich respektiere. Ich bin selbst ein "einzelner" Mann - wenn Sie ein Kernkraftwerk betreiben, haben Sie möglicherweise einen Tisch mit dem Namen catastrophic_meltdown, in dem Sie überhaupt keine Aufzeichnungen sehen möchten! Geben Sie Ihren Primärschlüsseln das Suffix _id und bezeichnen Sie sie in untergeordneten Tabellen als Parent_Table_Name_FK - das ist, was ich tue. Danach ist es ganz einfach! Was Groß- und Kleinschreibung betrifft, haben meine SQL-Skripte Groß- und Kleinschreibung (ohne Anführungszeichen), meine Aussagen können oder dürfen nicht.
Vérace