結合

データビューエディタ > リンク定義 > リンクの種類

「結合リンク」方式は、Magic の機能と併せて、RDBMS の結合機能を使用して複数のデータベーステーブルの読込を行ったり、結合を行ったりする時に使用します。この方式では、1 対多のリレーションの作成が可能です。この「結合リンク」は、エンドユーザがレコードを更新したり、Magic により再計算が実行されると「照会リンク」として機能します。

「結合リンク」によって、関連する全てのテーブルにおいてSQL 内部結合のクエリが作成されます。これに対して、通常のリンクコマンド(「照会リンク」)の場合は、次のようなデータ処理によってリンクを実現します。

  1. メインソースの行が取り出されます。

  2. 最初のリンクテーブルのカーソルが開かれ、行が取り出されます。

  3. 2番目のリンクテーブルのカーソルが開かれ、行が取り出されます。

通常のリンクコマンド(「照会リンク」)と、「結合リンク」は次の点が異なります。

以上の点から、複数のテーブルを使用して帳票出力や照会表示を行いたい場合、次のようにすると効率が上がります。

「結合リンク」は「照会リンク」と次の点で異なります。

「結合リンク」を指定した場合、タスクでデータビューが作成される際、Magic により結合テーブルに関するJOIN 構文が生成されます。また、定数と一致条件が入ったWhere句もMagic によって作成され、このWhere 句では、メインソースと結合テーブルのカラムの名前が指定されます。次に残りのデータビューが構築されます。

「結合リンク」でJOIN 構文が生成されると、「結合リンク」からは戻り値として常に「True」が返ります。その後、「結合リンク」が「照会リンク」として機能した場合(つまり、エンドユーザによるレコードの更新やMagic による再計算が実行された場合)、リンクの作成が試みられ、その結果、リンクレコードの項目の値がレコードのデータビューに表示されます。以下は、「結合リンク」を使用する場合の一般的な規則です。

「結合リンク」で使用されたキャッシュは、次の場合にクリアされます。

注意:

  • 「結合リンク」は、データベースがSQL データベースの場合にのみ有効です。また、結合できるテーブルは同一種類のデータベースのものに限ります。

  • DB2 UDBは各テーブルに対して個別のロックを要求するため、即時ロックになっているバッチタスクでの結合リンクは、結合された各テーブルに対してロックしないような結合リンク処理として動作し、フェッチされた各行に対する照会リンクとして動作します。

  • MagicによってSELECT文が生成され、そのSELECT 文で複数のテーブルが指定されている場合、テーブル名にはいずれもエイリアスが使われます。例えば、メインソースにはA、最初のジョインテーブルにはB、次のジョインテーブルにはC などというエイリアスが使用されます。

  • ユニークインデックスを使用した場合、Magicは重複レコードが作成できません(作成できない場合でもメッセージは表示されません)

参照