アプリ用のDBを作成しようとしていますが、Users
テーブルとItems
テーブルの間に1対多の関係を作成することをお勧めします。
3番目のテーブルReviewedItems
を作成でき、列をUser
idとItem
idにできることはわかっていますが、列を作成できるかどうかを知りたいUsers
では、reviewedItems
は、Items
がレビューしたUser
への外部キーを含む整数配列です。
PostgreSQLでこれができる場合は、お知らせください!そうでない場合は、3番目のテーブルルートに進みます。
いいえ、これは不可能です。
PostgreSQLはリレーショナル DBMSであり、適切に正規化されたデータモデルで最も効率的に動作します。配列は-定義上、順序付けられたセットです-リレーショナルデータ構造ではないため、SQL標準は配列要素での外部キーの定義をサポートせず、PostgreSQLもサポートしません。
ただし、他のテーブルの主キーにリンクする配列要素を使用して、完全に優れたデータベースを構築できます。ただし、これらの配列要素は外部キーとして宣言できないため、DBMSは参照整合性を維持しません。
すぐにこれを行うことが可能になるかもしれません: https://commitfest.postgresql.org/17/1252/ -Mark Rofailはこのパッチで素晴らしい仕事をしてくれました!
パッチは(完了したら)許可します
CREATE TABLE PKTABLEFORARRAY (
ptest1 float8 PRIMARY KEY,
ptest2 text
);
CREATE TABLE FKTABLEFORARRAY (
ftest1 int[],
FOREIGN KEY (EACH ELEMENT OF ftest1) REFERENCES PKTABLEFORARRAY,
ftest2 int
);
ただし、著者は現在、パッチをリベースするために(私の能力を超えて)助けが必要なので、これを読んでPostgresの内部を知っている人は、できれば助けてください。