2.3.9 シーケンシャルインデクス
シーケンシャルインデクスは,ルートレコード,または仮想ルートレコードの検索に使用するインデクスです。次の構成要素に必ず定義します。
-
4V FMBまたはSD FMBのSDBデータベースの場合
ルートレコード型の先頭の集団項目に定義したすべての基本項目の構成要素
-
4V AFMのSDBデータベースの場合
仮想ルートレコード型に定義したすべての基本項目の構成要素
シーケンシャルインデクスは指定した構成要素の値をキーとして,キーの昇順に作成されます。シーケンシャルインデクスはSDBデータベース格納定義のSEQUENTIAL句で定義します。
なお,仮想ルートレコード型に定義したシーケンシャルインデクスの場合,ほかのインデクス(4V FMBまたはSD FMBのSDBデータベースのルートレコード型に定義したシーケンシャルインデクス,または二次インデクス)とは次の点が異なります。
- ■仮想ルートレコード型に定義したシーケンシャルインデクスの場合
-
インデクスキーとレコード実現値の関係は,配下に有効な子レコード(一括削除後に無効な状態になる子レコードを除く)が存在する場合は2対1となり,配下に有効な子レコードが存在しない場合は1対1となります。
-
配下に有効な子レコードが存在する場合
2つのインデクスキー(システム用構成要素がX'0000'のインデクスキー,およびシステム用構成要素がX'0100'のインデクスキー)から仮想ルートレコード実現値に直接アクセスできる構造になります。
なお,システム用構成要素がX'0000'のインデクスキーは,ほかのインデクスと同様に,SDBデータベースを操作するAPIの実行時に仮想ルートレコードを検索するために使用されます。これに対し,システム用構成要素がX'0100'のインデクスキーは,HiRDB/SDが仮想ルートレコードの存在有無を判別するために使用されます。
仮想ルートレコード型に定義したシーケンシャルインデクスの物理構造(配下に有効な子レコードが存在する場合)を次の図に示します。
図2‒19 仮想ルートレコード型に定義したシーケンシャルインデクスの物理構造(配下に有効な子レコードが存在する場合) -
配下に有効な子レコードが存在しない場合
1つのインデクスキー(システム用構成要素がX'0100'のインデクスキー)から,仮想ルートレコード実現値に直接アクセスできる構造になります。
仮想ルートレコード型に定義したシーケンシャルインデクスの物理構造(配下に有効な子レコードが存在しない場合)を次の図に示します。
図2‒20 仮想ルートレコード型に定義したシーケンシャルインデクスの物理構造(配下に有効な子レコードが存在しない場合)
-
- ■仮想ルートレコード型に定義したシーケンシャルインデクス以外のインデクスの場合
-
インデクスキーとレコード実現値の関係は,1対1固定となります。
仮想ルートレコード型に定義したシーケンシャルインデクス以外のインデクスの物理構造を次の図に示します。
図2‒21 仮想ルートレコード型に定義したシーケンシャルインデクス以外のインデクスの物理構造