配列の実装方法には 2 つのオプションがあるようですが、どちらを使用すればよいかを知りたいです。
ARRAY データ型を使用し、(私が理解していることから) データ オブジェクトをデータベースに効果的にシリアル化します (私の場合はラップされたプリミティブ型です。これを機能させる別の方法はわかりません)。
個別のテーブルを使用し、配列項目ごとに外部キーをマップします。
これ(特にH2)の経験がある場合、どれをお勧めしますか?
配列の実装方法には 2 つのオプションがあるようですが、どちらを使用すればよいかを知りたいです。
ARRAY データ型を使用し、(私が理解していることから) データ オブジェクトをデータベースに効果的にシリアル化します (私の場合はラップされたプリミティブ型です。これを機能させる別の方法はわかりません)。
個別のテーブルを使用し、配列項目ごとに外部キーをマップします。
これ(特にH2)の経験がある場合、どれをお勧めしますか?
多くの場合、配列フィールドはデータベースでは禁止されており、正規化の原則に反することがよくあります。データの目的に応じて、親テーブルとの fk リレーションを持つ別のテーブル、または独立したテーブル (単一の項目が複数回発生する可能性がある場合、つまり、のn-m
代わりにリレーションシップを使用する場合に適していますn-0
)のいずれかにデータを格納する必要があります。それらと親テーブルの間の関係には fk-fk 結合テーブルを使用します。
ただし、SQL/JDBC ではSELECT
、DB が SQL コンストラクト/関数をサポートしているかどうかに応じて、多くの場合配列として使用できます。たとえば PostgreSQL では、 を使用ARRAY()
して Java/JDBC で取得できる関数を使用できますResultSet#getArray()
。