3

私は現在、およそ60程度のテーブルを含むアプリケーションを構築しています。メタ情報を持つものもあれば、実際のデータとその上にいくつかのビューがあるものもあります。私は、それぞれmeta_またはview_で、すべてのテーブル名を前に置くんだけど、それだけで同じデータベース内の別のスキーマにそれらを置くためにそれだけの価値はあるかもしれない?整理物事を保つためにスキーマ内でpostgresqlテーブルをグループ化する

  1. これは一般的なプラクティスですか?
  2. これを行わない理由はありますか?
  3. 異なるスキーマでFK制約を作成できますか?

PS:この回答から判断してもパフォーマンスの低下はないように思える:PostgreSQL: Performance penalty for joining two tables in separate schemas

答えて

3

あなたが好きなようにスキーマを使用することができます。プリンシパルに制限はありません。それらは、データベース内のユーザーを分離するなど、オブジェクトのグループに対する特定の権利をGRANTする必要がある場合に特に便利です。あなたはファイルシステムのディレクトリのように扱うことができます(ただし、類推には限界があります)。

私は、v_ビューのプレフィックスと、機能のプレフィックスf_を使用します。しかし、それは基本的には、テキスト検索でそれらのオブジェクトをすばやく見つけ出すための表記のほんの一部です(たとえば、ダンプをハックすると)。そのような接頭辞をと短くとすると、データベースの残りの期間は入力する必要があります。さまざまなセマンティックレイヤーからの複数の接頭辞を単一のオブジェクトに適用する必要があります。

私はは同じレベルでセマンティックプレフィックス(meta_)との機能的な接頭辞(v_またはview_)を混在させないでしょう。むしろ、メタオブジェクトのための別個のスキーマを作成し、接頭辞を使用してすべてのスキーマ全体でオブジェクト型を示します。

どのシステムを選択しても、一貫性を保ってください!あるいはそれは良いよりも害を及ぼすでしょう。

+0

「制限なし」とは、スキーマがpostgresqlの名前空間に過ぎないため、FKのものが期待どおりに機能することを意味します。 – ChrisR

+0

@ChrisR:あなたは正しく、複数のスキーマにまたがる外部キーは問題ではないと思います。これらは同じスキーマの内部と同じように機能します。 –

関連する問題