事前結合フィールドの考え方

事前結合フィールド(PJF: Predetermined Join Field)は、LANSAリポジトリならではの機能です。これは仮想フィールドの一種です(「仮想フィールドの考え方」を参照)。リポジトリ内の他のタイプの仮想ファイルと異なり、事前結合フィールドは、ある値または別ファイルの値をもとにして求められる仮想フィールドです。(その他の仮想フィールドは常に自身のファイル定義内のフィールドから派生します。)派生元である他のファイルとの関係は、アクセス経路の形で表します。

事前結合フィールドには、アクセス経路の先にあるファイルから検索したデータに対し、所定の演算を施した結果が入ります。この派生元フィールドも、リポジトリに定義したものでなければなりません。

派生元フィールドの値に対して適用できる演算は、アクセス経路として設定された関係が1対1か1対多かによって異なります。

1対多の関係 (アクセス経路の「最大レコード」を参照) であれば、TOTAL、MAXIMUM、MINIMUM、AVERAGE、COUNTの演算が適用できます(『LANSA テクニカル リファレンスガイド』の「結合タイプ」も参照)。

一方、1対1の関係であれば、事前結合フィールドの値を「LOOKUP」とすることにより、対応する値を検索して値を求める旨を指定したことになります。例えば、注文明細ファイルから製品ファイルに対するアクセス経路が定義されていれば、製品コードをキーとして製品の詳細説明を検索できます。ここで保管数を指定しておけば、最新の検索結果がキャッシュされるため、入出力の負荷を軽減できます。

1対多の関係であれば、アクセス経路に定義されたキーにより検索した複数のレコードに対し、所定の演算を施した結果が事前結合フィールドに入ります。例えば、注文の明細行ファイルから金額を検索し、その合計値を求めて頭書きの「合計」欄に表示する、といった使い方ができます。

事前結合フィールドに対して定義したアクセス経路には、保管数結合フィールド設定という属性を設定できます。どちらもアクセス経路上の事前結合フィールドすべてに適用されます。

「保管数」の値は、「1対1」の関係の場合に、アクセス経路に定義されている事前結合フィールドにのみ適用されます。アクセスしたファイルから取得した結果を、直前の「nnn」回分メモリに保存することにより、入出力の負荷を軽減することができます。

一方「結合フィールド設定」属性は、事前結合フィールドの値をどの時点で求めるか、を表します。すなわち、ファイルからデータを入力して仮想フィールドを派生させる前に求めるか、後で求めるかを表す属性です。

RDMLエディターには、事前結合フィールドも一般の仮想フィールドと同じように表示されます。

事前結合フィールドの動作は、アクセス経路の定義に依存して決まります。

警告

次のトピックも参照してください。

事前結合フィールドの使用例

人事管理システムにおける事前結合フィールドの使用例

事前結合フィールドに関する検討事項