IMSDB-論理データベース

IMSデータベースには、各セグメントタイプが持つことができる親は1つだけであるという規則があります。これにより、物理データベースの複雑さが制限されます。多くのDL / Iアプリケーションでは、セグメントが2つの親セグメントタイプを持つことができる複雑な構造が必要です。この制限を克服するために、DL / Iを使用すると、DBAは、セグメントが物理親と論理親の両方を持つことができる論理関係を実装できます。1つの物理データベース内に追加の関係を作成できます。論理関係を実装した後の新しいデータ構造は、論理データベースと呼ばれます。

論理的関係

論理関係には次の特性があります-

  • 論理関係は、物理的にではなく論理的に関連する2つのセグメント間のパスです。

  • 通常、論理的な関係は別々のデータベース間で確立されます。ただし、1つの特定のデータベースのセグメント間に関係を持たせることは可能です。

次の画像は、2つの異なるデータベースを示しています。1つは学生データベースで、もう1つは図書館データベースです。StudentデータベースのBooksIssueセグメントとLibraryデータベースのBooksセグメントの間に論理関係を作成します。

これは、論理関係を作成するときに論理データベースがどのように見えるかです-

論理子セグメント

論理子セグメントは、論理関係の基礎です。これは物理データセグメントですが、DL / Iの場合、2つの親があるように見えます。上記の例のBooksセグメントには、2つの親セグメントがあります。発行済み書籍セグメントは論理親であり、図書館セグメントは物理親です。1つの論理子セグメントオカレンスには1つの論理親セグメントオカレンスしかなく、1つの論理親セグメントオカレンスには多くの論理子セグメントオカレンスがあります。

論理的な双子

論理ツインは、論理親セグメントタイプの単一オカレンスにすべて従属する論理子セグメントタイプのオカレンスです。DL / Iは、論理子セグメントを実際の物理子セグメントと同様に表示します。これは、仮想論理子セグメントとも呼ばれます。

論理関係の種類

DBAは、セグメント間に論理関係を作成します。論理関係を実装するには、DBAは関連する物理データベースのDBDGENで論理関係を指定する必要があります。論理関係には3つのタイプがあります-

  • Unidirectional
  • 双方向仮想
  • 双方向の物理

一方向

論理接続は論理子から論理親に行き、その逆はできません。

双方向仮想

両方向へのアクセスが可能です。物理構造内の論理子と対応する仮想論理子は、ペアのセグメントと見なすことができます。

双方向の物理

論理子は、物理親と論理親の両方に物理的に格納された従属です。アプリケーションプログラムからは、双方向の仮想論理子と同じように見えます。

プログラミングに関する考慮事項

論理データベースを使用するためのプログラミング上の考慮事項は次のとおりです。

  • データベースにアクセスするためのDL / I呼び出しは、論理データベースでも同じです。

  • プログラム仕様ブロックは、呼び出しで使用する構造を示します。場合によっては、論理データベースを使用していることを識別できません。

  • 論理関係は、データベースプログラミングに新しい次元を追加します。

  • 2つのデータベースが統合されているため、論理データベースを操作するときは注意が必要です。一方のデータベースを変更する場合は、同じ変更をもう一方のデータベースに反映する必要があります。

  • プログラム仕様は、データベースで許可される処理を示す必要があります。処理ルールに違反すると、空白以外のステータスコードが表示されます。

連結セグメント

論理子セグメントは常に、宛先の親の完全に連結されたキーで始まります。これは、Destination Parent Concatenated Key(DPCK)として知られています。論理子のセグメントI / O領域の開始時に、常にDPCKをコーディングする必要があります。論理データベースでは、連結されたセグメントは、異なる物理データベースで定義されているセグメント間の接続を確立します。連結されたセグメントは、次の2つの部分で構成されます-

  • 論理子セグメント
  • 宛先親セグメント

論理子セグメントは、次の2つの部分で構成されます-

  • 宛先親連結キー(DPCK)
  • 論理的な子ユーザーデータ

更新中に連結されたセグメントを操作する場合、1回の呼び出しで、論理子と宛先親の両方のデータを追加または変更できる場合があります。これは、DBAがデータベースに指定したルールにも依存します。インサートの場合は、DPCKを正しい位置に配置します。置換または削除の場合、連結されたセグメントのいずれかの部分のDPCKまたはシーケンスフィールドデータを変更しないでください。