web-dev-qa-db-ja.com

PostgreSQLの命名規則

多分ダブルポストかもしれませんが、私はここで答えを見つけることができませんでした。

テーブルに名前を付ける方法をいくつか投稿しましたが、(半公式に)小文字を含める必要があり、アンダースコアを付けて単数形にする必要があることを理解しました(my_tableなど)

私が次のことをしなければならないときに私の質問が生じました。ユーザー、プラットフォーム、およびuser_infoがあり、プラットフォームはユーザーが作業しているものです(MAC、PC、LINUXなど)。ユーザーとプラットフォームの間にジャンクションテーブルを作成する必要がある場合、スキーマを参照する次のユーザーがuser_platformという名前のジャンクションテーブルを持っていることを理解するために、どのように名前を付けますか?ただし、テーブルuser_infoを見て混乱しないようにするには?

BR

2
Pentarex

小文字の名前の背後にある理由が明確でない場合、理由は次のとおりです。Postgresが自動的かつ非表示で名前を折りたたみます。したがって、これらの名前はすべて同じです:

user_platform

USER_PLATFORM

UsEr_PlAtFoRm

それらはすべて内部的にuser_platformです。それらを二重引用符で囲まない限り:

「UserPlatform」は「UserPlatform」です。ただし、このフィールドまたはテーブルを使用するには、名前を二重引用符で囲む必要がありますeverywhere使用します。それは完全な痛みです。したがって、次のような名前を表示することはかなり標準的です

user_platform

そうは言っても、二重引用符を使用しない限り、名前を書くことができます

User_Platform

読みやすくなった場合。

命名規則に関する限り、はい、1つ選択しそれに固執し、ルールを文書化します。 (デフォルトで)64文字で動作しますが、インデックス名の場合を除いて、これは問題ではありません。

テーブルをリンクするために、あなたが好きなものは何でも結構です。ユーザーとプラットフォームをリンクしていますか?

user_platform

user_link_platform

あなたが好むものは何でも。

単数と複数の議論に関しては、それは好みの問題です。一部の人々は気にします。たくさん。溝は不義の者の血で赤くなります!私はあなたが好きなことを何でもします。私はテーブル名を1つにまとめる学校に所属していますが、その主な理由は、ずっと前に習っていた習慣だからです。

ああ、二重引用符についての1つ...私はそれらを使用します。 PostgresデータをDomoと呼ばれる視覚化/分析プログラムに発送します。そのためには、MixedCaseに列(属性)名を含める方が適しています。そのため、「MixedCase」列のエイリアスを使用してビューを作成し、データが「MixedCase」という名前でエクスポートされるようにします。これは少しエキゾチックなシナリオですが、たぶん同じようなものに出くわすでしょう。通常、テーブルをクライアント側で変更しますが、ビューの方が簡単な解決策でした。

ボーナスチップ!まだ発見していない場合、Postgresのテキストフィールドでは大文字と小文字が区別されます。それが気に入らない場合は、次のことができます。

  • ケースブラインドでデータを処理するクエリを記述します。すべて。シングル。クエリ。
  • 標準のCitext拡張機能を使用します。 (大文字と小文字を区別しないテキスト。)
  • PG12が大文字と小文字を区別しない照合で出荷されるのを待ちます。 (まだ試していない)

言及するのを忘れました... Postgresは、テーブルを含むシステム要素へのコメントを非常によくサポートしています:

https://www.postgresql.org/docs/current/sql-comment.html

もちろん誰かがあなたのコメントを探して読む必要がありますが、それはあなたがコンテキストを提供できるもう一つの場所です。そのコンテキストが、あなたが維持しているwikiへのリンクにすぎない場合などでも、.

2
Morris de Oryx