PostgreSQLの命名規則


191

PostgreSQLの命名規則に関する詳細なマニュアルはどこにありますか?(テーブル名とキャメルケース、シーケンス、主キー、制約、インデックスなど...)


まあ、我々は一般的な命名convensionにビットさらに、ルック行く場合、私は非常にこの答えをチェックお勧めします。stackoverflow.com/questions/4702728/...
vyegorov

回答:


249

テーブル名、大文字小文字などについて、一般的な規則は次のとおりです。

  • SQLキーワード: UPPER CASE
  • 名前(識別子): lower_case_with_underscores

UPDATE my_table SET name = 5;

これは石で書かれていませんが、小文字の識別子についてのビットは強くお勧めします、IMO。Postgresqlは、引用符で囲まれていない場合は識別子を大文字と小文字を区別せず(実際には内部的に小文字に変換する)、引用符で囲む場合は大文字と小文字を区別します。多くの人々はこの特異性を認識していません。常に小文字を使用すると安全です。とにかく、あなたが一貫している限り、camelCaseまたはPascalCase(またはUPPER_CASE)を使用することは許容されます:識別子を常に引用するか、しないか(そしてこれにはスキーマの作成も含まれます!)

私はもっ​​と多くの慣習やスタイルガイドを知りません。サロゲートキーは通常、シーケンスから(通常はserialマクロを使用して)作成されます。シーケンスを手動で作成する場合は、それらのシーケンスの名前をそのまま使用すると便利です(tablename_colname_seq)です。

ここここ、および(一般的なSQLの場合は)ここのディスカッションも参照してください。

注:Postgresql 10ではidentityシリアルの SQL準拠の代替として列が導入されました。


3
FWIW、唯一の特異性は、Pgが小文字に変換されることです。SQL標準では、大文字に変換する必要があるとされています。大文字小文字の変換に失敗したDBMSは、奇妙な非標準のDBMSです。
クレイグリンガー、

6
Postgresの新しいユーザーとして、これはかなりイライラします。常に引用符を入力するか、醜い命名規則を使用するかを選択しなければならないというのは面倒です。お尻を吸う。
d512

1
@ user1334007規約は見苦しくありません-上のクレイグのコメントを読んでください。また、テーブルの作成時に引用しなかった場合(つまり、一貫している場合)は引用する必要はありません。
leonbloy 2016年

4
@leonbloy、テーブルを作成するときに引用しない場合、Postgresはテーブル名とフィールド名を小文字にします。クエリを作成するときにキャメルケースを使用できますが、結果がすべて小文字で表示されるため、フィールドが複数の単語で構成される場合(lastupdateddate)は読みにくくなります。クエリ結果で列名を読みやすくしたい場合は、すべてを引用するか、IMOが醜いスネークケースを使用する必要があります。Postgresがあなたの名前をそのままにして、引用符を提供する必要がないなら、それははるかに良いでしょう。
d512

11
キーワードは大文字で嫌い、嫌い、慣習、いいえ。キーワードに関して、大文字小文字の区別はありません。私はすべて小文字を好みます。はい、私はそれが単なる好みであることを知っていますが、これも単なるコメントです。;-)
クレイグ、

28

単一のスタイルや標準がないため、実際には正式なマニュアルはありません。

識別子の命名規則を理解している限り好きなように使用できます。

実際には、私はそれをするlower_case_underscore_separated_identifiers必要がないので使いやすいと思います"Double Quote"大文字小文字やスペースなどを保存ためにどこにでもいる。

テーブルと関数に名前を付けたい場合 "@MyAṕṕ! ""betty"" Shard$42"、どこにでも入力するのは面倒ですが、自由ことができます。

理解すべき主なものは次のとおりです。

  • 二重引用符で囲まれていない限り、識別子は小文字に小文字に変換されるためMyTableMYTABLEmytableはすべて同じものですが"MYTABLE"、と"MyTable"は異なります。

  • 二重引用符で囲まれていない限り:

    SQL識別子とキーワードは、文字(az、または発音区別符号付きの文字と非ラテン文字)またはアンダースコア(_)で始まる必要があります。識別子またはキーワードの後続の文字には、文字、アンダースコア、数字(0-9)、またはドル記号($)を使用できます。

  • 識別子として使用する場合は、キーワードを二重引用符で囲む必要があります。

実際には、識別子としてキーワードを使用しないことを強くお勧めします。少なくとも予約語は避けてください。テーブルに名前を付けることができるからといって、そうする必要はありません。"with"


1
識別子の命名規則に関するドキュメントへのリンクをありがとう。その特定のトピックを見つけるのに苦労しました。
バジルブルク

1
「私は使いやすいと思いますlower_case_underscore_separated_identifiers」...最近、これは「ヘビの場合」と説明されていると聞きました
bvj
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.