11.7.2 SDBデータベース格納定義【SD FMB】
*ENTRY DICTIONARY文に指定するSDBデータベース格納定義について説明します。
- 〈この項の構成〉
(1) 機能
SDBデータベースを格納する際の論理構造を定義します。
(2) 形式
項番 |
形式 |
---|---|
STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名 |
|
DBTYPE SD |
|
STORAGE RECORD 格納レコード名 |
|
{CLUSTERED 親子集合型名|SEQUENTIAL シーケンシャルインデクス名 |
|
FOR RECORD |
|
ORDER KEY ASCENDING 構成要素名〔,構成要素名〕… |
|
〔PCTFREE ページ内の未使用領域の比率〕 |
|
WITHIN {シーケンシャルインデクス用RDエリア名 |(シーケンシャルインデクス用RDエリア名) |((シーケンシャルインデクス用RDエリア名) 〔,(シーケンシャルインデクス用RDエリア名)〕…)} } |
|
〔SUBPAGE NUMBER サブページ分割数〕 |
|
〔PCTFREE {ページ内の未使用領域の比率 |(〔ページ内の未使用領域の比率〕,セグメント内の空きページの比率)}〕 |
|
〔DEPENDING ON 構成要素名〕 |
|
WITHIN {格納レコード用RDエリア名 |(格納レコード用RDエリア名) |((格納レコード用RDエリア名) 〔格納条件〕 〔,(格納レコード用RDエリア名) 格納条件〕…) |((格納レコード用RDエリア名) RDエリア分割キー値 〔,(格納レコード用RDエリア名) RDエリア分割キー値…〕 ,(格納レコード用RDエリア名))} |
|
〔SECONDARY INDEX 二次インデクス名 |
|
USED FOR RECORD |
|
ORDER KEY ASCENDING 構成要素名〔,構成要素名〕… |
|
〔PCTFREE ページ内の未使用領域の比率〕 |
|
WITHIN {二次インデクス用RDエリア名 |(二次インデクス用RDエリア名)} |
|
〕… |
|
… |
|
〔SET 親子集合型名 |
|
OWNER POINTER FOR FIRST LAST MEMBER |
|
MEMBER POINTER FOR {NEXT PRIOR│OWNER NEXT PRIOR} TENANT |
|
〕… |
|
− |
〔SDBOPTION〕※ |
END STORAGE SCHEMA |
(3) オペランドの説明
SDBデータベース格納定義の各オペランドの指定内容を説明します。
(a) STORAGE SCHEMA
- STORAGE SCHEMA SDBデータベース格納名 FOR SDBデータベース名
-
SDBデータベース格納名と対応するSDBデータベース名を指定します。
- SDBデータベース格納名
-
〜<識別子>((1〜30バイト))
SDBデータベース格納名を指定します。
すでに使用しているSDBデータベース格納名は指定できません。
- SDBデータベース名
-
〜<識別子>((1〜30バイト))
SDBデータベース名を指定します。
SDBデータベース名に一致する名称がSDBデータベース定義にない場合は,エラーとなります。
(b) DBTYPE
- DBTYPE SD
-
SDBデータベース種別がSD FMBのSDBデータベースを定義します。
- 注意事項
-
SDBデータベース種別が4V(4V FMBまたは4V AFM)のSDBデータベースとSD FMBのSDBデータベースをシステム内で混在して定義することはできません。混在させた場合,動作を保証しません。
(c) STORAGE RECORD
- STORAGE RECORD 格納レコード名
-
- 格納レコード名
-
〜<識別子>((1〜30バイト))
SDBデータベース定義のRECORD句で指定したレコード型名を,格納レコード名として指定します。
《規則》
-
SDBデータベース定義のRECORD句で指定したレコード型名と同じ個数,同じ順番で指定してください。
-
すでに使用している格納レコード名は指定できません。ただし,格納レコードの所有者(スキーマ)が異なる場合は,同じ格納レコード名を指定できます。
-
(d) CLUSTERED,SEQUENTIAL
- CLUSTERED 親子集合型名|SEQUENTIAL シーケンシャルインデクス名
-
格納するレコードの配置方法を指定します。
- CLUSTERED 親子集合型名
-
親子集合型名
〜<識別子>((1〜30バイト))
すべての子レコードを親レコードと同じRDエリアに格納する場合に指定します。
《規則》
-
STORAGE RECORD句に指定したレコード型ごとに1つ指定できます。STORAGE RECORD句に指定したレコード型が,ルートレコード型の場合は指定できません。
-
SDBデータベース格納定義のSET句に指定する親子集合型名と同じ個数,同じ順番で指定してください。
-
- SEQUENTIAL シーケンシャルインデクス名
-
インデクスのキーの値の順序に従って,親レコード実現値の格納位置を決めるときに指定します。SEQUENTIAL句は,ルートレコード型に必ず指定します。
シーケンシャルインデクス名
〜<識別子>((1〜30バイト))
STORAGE RECORD句に指定したルートレコード型に対して1つ指定します。STORAGE RECORD句に指定したレコード型が,ルートレコード型以外の場合は指定できません。
《規則》
-
シーケンシャルインデクス名は,同一スキーマ内で一意になるように指定してください。
-
(f) ORDER KEY
- ORDER KEY ASCENDING 構成要素名〔,構成要素名〕…
-
インデクスのキーとなる構成要素名を指定します。
指定した構成要素名をキーとして,昇順にシーケンシャルインデクスが作成されます。
- ASCENDING
-
昇順にシーケンシャルインデクスを作成します。
- 構成要素名
-
〜<識別子>((1〜30バイト))
インデクスのキーに指定する構成要素を次に示すように指定してください。
-
SDBデータベース定義内のルートレコード型のデータベースキーに指定した基本項目の構成要素名を,定義順にすべて指定します。ルートレコード型の構成要素の指定については,「表11-71 ルートレコード型の構成要素の指定」を参照してください。SDBデータベースの定義例については,「11.11.3 SDBデータベースの定義例(SD FMBの場合)」を参照してください。
《規則》
-
構成要素名は,格納レコード名と対応するSDBデータベース定義のレコード型名で指定した構成要素名としてください。
-
シーケンシャルインデクス作成時に指定できる構成要素名の条件について,次の表に示します。
表11‒74 シーケンシャルインデクス作成時に指定できる構成要素名の条件 項目
内容
指定できる構成要素名の数
最大7個
インデクスのキー長の合計
255バイト以内
インデクスのキーに指定する構成要素とキー長の関係については,「表11-75 インデクスのキーに指定する構成要素とキー長の関係」を参照してください。
構成要素名
基本項目の構成要素名
集団項目が含まれる構成要素名は指定できません。
表11‒75 インデクスのキーに指定する構成要素とキー長の関係 データ型
インデクスのキー長(単位:バイト)
構成要素名の指定が1つの場合
構成要素名の指定が複数の場合
CHARACTER
SDBデータベース定義で指定したデータ長
SDBデータベース定義で指定したデータ長+制御部(1バイト)
XCHARACTER
PACKED 〔DECIMAL FIXED〕 整数部桁数〔,小数部桁数〕
↓(整数部桁数+小数部桁数)÷2↓+1
↓(整数部桁数+小数部桁数)÷2↓+2
INTEGER
4
5
SMALLINT
2
3
-
(h) WITHIN
- WITHIN {シーケンシャルインデクス用RDエリア名
-
|(シーケンシャルインデクス用RDエリア名)
|((シーケンシャルインデクス用RDエリア名)
〔,(シーケンシャルインデクス用RDエリア名)〕…)}
- シーケンシャルインデクス用RDエリア名
-
〜<RDエリア名>((1〜30バイト))
シーケンシャルインデクスを格納するRDエリア名を指定します。
1つのSEQUENTIAL句に対して,WITHIN句を必ず1つ指定してください。
《規則》
シーケンシャルインデクスを複数のRDエリアに格納する場合の規則
-
シーケンシャルインデクス用RDエリアとして指定できるRDエリアの数とSDBデータベースの横分割の関係を次の表に示します。
表11‒76 シーケンシャルインデクス用RDエリアとして指定できるRDエリア数とSDBデータベースの横分割の関係 SDBデータベースの横分割方法
指定できるRDエリア数
分割指定なし
1
格納条件分割
1〜256
境界値分割
2〜3,000(1,024)※
-
シーケンシャルインデクス用RDエリアは,格納レコード用RDエリアと同じ数を指定する必要があります。
-
1つのWITHIN句の中では,シーケンシャルインデクス用RDエリア名は一意に指定してください。なお,境界値分割指定の場合,隣接するRDエリア名が重複している場合だけエラーとなります。
-
境界値分割指定の格納レコード用RDエリアを重複して指定している場合は,シーケンシャルインデクス用RDエリアも重複して指定してください。シーケンシャルインデクス用RDエリアを重複して指定する場合の例を次の表に示します。
表11‒77 シーケンシャルインデクス用RDエリアを重複して指定する場合の例 指定
格納レコード用RDエリアの指定
シーケンシャルインデクス用RDエリアの指定
RDエリアの重複なし
((RDAREAX) X'00FF',
(RDAREA1) X'01FF',
(RDAREA2) X'03FF',
(RDAREA3) )
((RDAREAX_I),
(RDAREA1_I),
(RDAREA2_I),
(RDAREA3_I))
RDエリアの重複あり
((RDAREAX) X'00FF',
(RDAREA1) X'01FF',
(RDAREA2) X'03FF',
(RDAREA1))
((RDAREAX_I),
(RDAREA1_I),
(RDAREA2_I),
(RDAREA1_I))
-
格納レコード用RDエリアと対応するシーケンシャルインデクス用RDエリアは,同じサーバ内のRDエリアである必要があります。
指定するシーケンシャルインデクス用RDエリアに関する規則
-
格納レコード用RDエリアとして指定したRDエリアは指定できません。
-
シーケンシャルインデクス用RDエリアには,create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。
-
シーケンシャルインデクス用RDエリアとして指定するRDエリアには,1つのRDエリアにシーケンシャルインデクスを最大500個指定できます。
-
シーケンシャルインデクス用RDエリアに定義できるリソースの組み合わせを次の表に示します。
表11‒78 RDエリアに定義できるリソースの組み合わせ 定義するリソース
RDエリアの定義
レコード型・インデクス定義なし
SDBデータベース格納定義A
レコード型定義あり
インデクス定義あり
SDBデータベース格納定義A
レコード型
○
○
×
インデクス
○
×
○
SDBデータベース格納定義B
レコード型
○
×
×
インデクス
○
×
○
-
(i) SUBPAGE NUMBER
- SUBPAGE NUMBER サブページ分割数
-
- サブページ分割数
-
〜<符号なし整数>((2〜16))
1データページ当たりのサブページ分割数を指定します。SUBPAGE NUMBERを省略した場合,サブページ分割されません。サブページ分割数の設計方針については,「3.2.4 サブページの設計」を参照してください。
《規則》
-
ルートレコード型,およびすべての子レコード型で同じサブページ分割数を指定してください。
-
サブページ分割数を指定する場合,格納レコード用RDエリアのページ長が,4096バイトである必要があります。
-
(j) PCTFREE
- PCTFREE {ページ内の未使用領域の比率
-
|(〔ページ内の未使用領域の比率〕,セグメント内の空きページの比率)}
- ページ内の未使用領域の比率
-
〜<符号なし整数>((0〜99))
- セグメント内の空きページの比率
-
〜<符号なし整数>((0〜50))
データベースの初期作成時に設定するページ内の未使用領域の比率を指定します。ページ内の未使用領域の比率は,0〜99(%)の範囲で指定できます。ページ内の未使用領域の比率を省略すると,30(%)が仮定されます。
SUBPAGE NUMBER句でサブページ分割数を指定している場合,ページ内の未使用領域の比率は,サブページ内の未使用領域の比率になります。例えば,30を指定した場合,サブページ内の未使用領域の比率が30%になります。
また,セグメント内の空きページの比率を0〜50(%)の範囲で指定できます。セグメント内の空きページの比率を省略すると,10(%)が仮定されます。
- 《規則》
-
ルートレコード型,およびすべての子レコード型で同じ値を指定してください。
(k) DEPENDING ON
- DEPENDING ON 構成要素名
-
- 構成要素名
-
〜<識別子>((1〜30バイト))
SDBデータベースを境界値で複数のRDエリアに横分割して格納する場合の,境界値分割のキーとなる構成要素名を指定します。
《規則》
-
ルートレコード型にだけ指定できます。
-
CLUSTERED句を指定した格納レコードに対しては指定できません。
-
格納レコード名と対応するSDBデータベース定義のレコード型名で指定した構成要素名である必要があります。
-
構成要素名には,データ種別1がK,データ種別2がAの構成要素名を指定します。
-
SDBデータベースの横分割方法が格納条件指定の場合は指定できません。
-
(l) WITHIN
- WITHIN {格納レコード用RDエリア名
-
|(格納レコード用RDエリア名)
|((格納レコード用RDエリア名) 〔格納条件〕
〔,(格納レコード用RDエリア名) 格納条件〕…)
|((格納レコード用RDエリア名) RDエリア分割キー値
〔,(格納レコード用RDエリア名) RDエリア分割キー値…〕
,(格納レコード用RDエリア名))}
- 格納レコード用RDエリア名
-
〜<RDエリア名>((1〜30))
- 格納条件
-
〜構成要素名=(RDエリア分割キー値〔,RDエリア分割キー値〕…)
- RDエリア分割キー値
-
〜X'<16進数字>'((1〜30バイト))
〜'<英数字または下線(_)>'((1〜30バイト))※1
〜<10進数定数>※2
〜<整数定数>※3
- 注※1
-
先頭に下線(_)は指定できません。
- 注※2
-
10進数定数については,マニュアル「HiRDB SQLリファレンス」の「定数」を参照してください。
整数部と小数部にすべて0を指定する場合,符号に-を指定しないでください。-0.を指定しても0.として扱います。
なお,10進数定数の値の範囲を超える値を指定できません。
- 注※3
-
整数定数については,マニュアル「HiRDB SQLリファレンス」の「定数」を参照してください。
-0を指定しても0として扱います。
なお,整数定数の値の範囲を超える値を指定できません。
レコード実現値を格納するRDエリア名を指定します。
1つのSTORAGE RECORD句に対して,WITHIN句を必ず1つ指定してください。
RDエリア分割キーのデータ型ごとのRDエリア分割キー値の指定形式を次の表に示します。
表11‒79 RDエリア分割キーのデータ型ごとのRDエリア分割キー値の指定形式 RDエリア分割キーのデータ型
RDエリア分割キー値の指定形式
16進数字
英数字,または下線(_)
10進数定数
整数定数
CHARACTER
○
○
×
×
XCHARACTER
○
○
×
×
PACKED 〔DECIMAL FIXED〕
×
×
○
×
INTEGER
×
×
×
○
- 《規則》
-
レコードを複数のRDエリアに格納する場合の規則
-
1レコード型に対して指定できる格納レコード用RDエリアの数とSDBデータベースの横分割の関係を次の表に示します。
表11‒80 レコード型に対して指定できる格納レコード用RDエリアの数とSDBデータベースの横分割の関係 SDBデータベースの横分割方法
指定できるRDエリア数
分割指定なし
1
格納条件分割
1〜256
境界値分割
2〜3,000(1,024)※
-
格納条件分割で格納レコード用RD エリア名を複数指定した場合は,すべての格納レコード用RD エリア名に格納条件を指定してください。
-
同一SDBデータベース格納定義内の子レコード型に指定する格納レコード用RDエリア名は,ルートレコード型と同じ数,同じ順番ですべて指定する必要があります。
-
1つのWITHIN句の中では,格納レコード用RDエリア名は一意に指定してください。なお,境界値分割指定の場合,隣接するRDエリア名が重複している場合だけエラーとなります。
-
SECONDARY INDEX句を指定する場合,格納条件,およびRDエリア分割キー値は指定できません。
-
RDエリア分割キー値に指定できる範囲を次の表に示します。
表11‒81 RDエリア分割キー値に指定できる範囲 RDエリア分割キー値の指定形式
SDBデータベースの横分割方法
RDエリア分割キー値
最小
最大
16進数字
格納条件分割
X'00…00'
X'FF…FF'
境界値分割
X'00…00'
X'FF…FE'
10進数定数
格納条件分割
-9…9.9…9
(整数部と小数部がRDエリア分割キーの全体桁数分'9'の負の数)
9…9.9…9
(整数部と小数部がRDエリア分割キーの全体桁数分'9'の正の数)
境界値分割
-9…9.9…9
(整数部と小数部がRDエリア分割キーの全体桁数分'9'の負の数)
9…9.9…8
(整数部と小数部がRDエリア分割キーの全体桁数のうち,最後の桁を除くすべての桁が'9'かつ最後の桁が'8'の正の数)
整数定数
格納条件分割
−2147483648
2147483647
境界値分割
−2147483648
2147483646
指定する格納レコード用RDエリアに関する規則
-
インデクスを格納するRDエリアは指定できません。
-
格納レコード用RDエリアには,create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。
-
指定するRDエリア名には,格納レコード長が当該RDエリアのページ長(サブページ分割をしている場合はサブページ長)に収まるRDエリア名を指定してください。
-
格納レコード用RDエリアに定義できるリソースの組み合わせについては,「表11-78 RDエリアに定義できるリソースの組み合わせ」を参照してください。
レコードの格納条件に関する規則
-
格納条件は,ルートレコード型にだけ指定できます。
格納条件に指定する構成要素に関する規則
-
1個のWITHIN句の中では,単一の構成要素名を指定してください。複数種類の構成要素名は指定できません。
-
構成要素名には,SDBデータベース定義で指定した構成要素名を指定してください。
-
構成要素名には,データ種別1がK,データ種別2がAの構成要素名を指定してください。
格納条件のRDエリア分割キー値に関する規則
-
1つのWITHIN句に対するRDエリア分割キー値は,最大15,000個指定できます。
-
1つのWITHIN句の中で同じRDエリア分割キー値は重複して指定できません。
-
RDエリア分割キーのデータ型がCHARACTER,またはXCHARACTERの場合,指定したRDエリア分割キー値の長さは,SDBデータベース定義で指定した格納条件の構成要素の長さと一致させる必要があります。
-
RDエリア分割キーのデータ型がPACKEDの場合,RDエリア分割キーの整数部桁数,および小数部桁数の範囲内の値を指定してください。
境界値分割時(DEPENDING ON句指定時)のRDエリア分割キー値に関する規則
-
最初に境界値を指定するRDエリアには,指定する境界値以下の値のレコードが格納されます。
2番目以降(最後は除く)に指定するRDエリアには,その前に指定した境界値より大きく,かつその後に指定する境界値以下の値のレコードが格納されます。
最後に指定するRDエリアには,その前に指定した境界値より大きい値のレコードが格納されます。
境界値分割時のSDBデータベースの横分割とSDBデータベース格納定義の例を次の図に示します。
図11‒17 境界値分割時のSDBデータベースの横分割とSDBデータベース格納定義の例 <定義例>
STORAGE SCHEMA SCM01 FOR SCM01 DBTYPE SD STORAGE RECORD RECA SEQUENTIAL IDX1 FOR RECORD : WITHIN ((RI1),(RI2),(RI1),(RI2)) DEPENDING ON C1 WITHIN ((RT1)100,(RT2)200,(RT1)300,(RT2)) : END STORAGE SCHEMA
-
境界値分割時には,格納条件の指定はできません(RDエリア分割キー値の指定をする必要があります)。
-
RDエリア分割キーのデータ型がCHARACTER,またはXCHARACTERの場合,RDエリア分割キー値の長さは,DEPENDING ON句で指定した構成要素の長さと一致させる必要があります。
-
RDエリア分割キー値は重複して指定できません。
-
RDエリア分割キー値は昇順に指定する必要があります。
-
RDエリア分割キー値を16進数字,英数字または下線(_)の形式で指定する場合,RDエリア分割キー値の長さが1つ目の長さと異なるとエラーとなります。
-
RDエリア分割キーのデータ型がPACKEDの場合,RDエリア分割キーの整数部桁数,および小数部桁数の範囲内の値を指定してください。
-
(m) SECONDARY INDEX
- SECONDARY INDEX 二次インデクス名
-
- 二次インデクス名
-
〜<識別子>((1〜30バイト))
二次インデクス名を指定します。
《規則》
-
SECONDARY INDEX句を指定する場合は,HiRDB Structured Data Access Facility Extension for XDM/SD typeをインストールする必要があります。
-
二次インデクス名は,同一スキーマ内で一意になるように指定してください。シーケンシャルインデクス名も含めて一意になるようにしてください。
-
二次インデクス名には,シーケンシャルインデクス名とは別の名称を指定してください。
-
SECONDARY句は,1つのSTORAGE RECORD句内で16個まで指定できます(ルートレコード型の場合は,シーケンシャルインデクスを含みます)。詳細については,「表11-82 二次インデクスの定義規則」を参照してください。
-
3階層以上のレコード型には指定できません。
-
子レコードにSECONDARY INDEX句を指定した場合,MEMBER POINTER FOR句にOWNERを必ず指定してください。
-
SECONDARY INDEX句を指定した場合,格納レコード用RDエリア名を指定するWITHIN句のRDエリア指定には格納条件,およびRDエリア分割キー値を指定しないでください。
-
(n) USED FOR
- USED FOR RECORD
-
二次インデクスの種別を指定します。
- RECORD
-
レコード型内二次インデクスを定義します。
- 《規則》
-
SECONDARY INDEX句を指定した場合,このオペランドを必ず指定してください。
(o) ORDER KEY
- ORDER KEY ASCENDING 構成要素名〔,構成要素名〕…
-
- 構成要素名
-
〜<識別子>((1〜30バイト))
二次インデクスのキーとなる構成要素名を指定します。
ORDER KEY句については,「11.7.2(3)(f) ORDER KEY」を参照してください。
《規則》
-
1つのSTORAGE RECORD内に複数のインデクス(シーケンシャルインデクス,および二次インデクス)を定義する場合,すべての構成要素名の指定順序が同一のインデクスを複数定義できません。
-
二次インデクスについては,「表11-82 二次インデクスの定義規則」に従って定義してください。
-
構成要素に,集団項目の構成要素は指定できません。
-
同じ構成要素名を重複して指定できません。
-
キー項目を含む場合,SDBデータベース定義のKEY句にASCENDINGを指定してください。
-
1つの二次インデクスに指定できる構成要素の数は,1〜16個です。
-
二次インデクスのキー長の合計値の上限はシーケンシャルインデクスのキー長の合計の上限値と同じです。詳細については,「表11-74 シーケンシャルインデクス作成時に指定できる構成要素名の条件」の「インデクスのキー長の合計」を参照してください。
-
指定した構成要素,または指定した構成要素の上位の構成要素にOCCURS句は指定できません。
-
二次インデクスの構成要素の指定順序は任意です。
-
二次インデクスの定義規則を次に示します。
表11‒82 二次インデクスの定義規則 レコード型種別
二次インデクスの指定
指定する構成要素
ルートレコード型
0〜15本
「表11-83 指定できる構成要素のデータ種別」を参照してください。
子レコード型
(2階層)
0〜16本
子レコード型
(3階層以上)
×
−
表11‒83 指定できる構成要素のデータ種別 項番
データ種別1
データ種別2
構成要素の指定可否
1
K
L
○
2
A
×
3
N
○
4
P
×
5
U
D
○
6
F
×
二次インデクスに指定する構成要素の定義例を次に示します。
-
ルートレコード型の場合
SDBデータベース定義
: RECORD RECA 2 KEYDATA 3 DBKEY_L2 XCHARACTER 1 TYPE K,L 3 DBKEY_L3 XCHARACTER 1 TYPE K,L 3 DBKEY_L4 CHARACTER 3 TYPE K,L 2 USERDA0 CHARACTER 30 TYPE U,D 2 USERDAN0 CHARACTER 10 TYPE U,D :
SDBデータベース格納定義
: STORAGE RECORD RECA SEQUENTIAL RECA_SI FOR RECORD ORDER KEY ASCENDING DBKEY_L2, DBKEY_L3, DBKEY_L4 WITHIN FMBX01 WITHIN FMBX02 SECONDARY INDEX RECA_SI1 USED FOR RECORD ORDER KEY ASCENDING DBKEY_L2, DBKEY_L3, USERDA0 WITHIN FMBX01 :
-
第2階層のレコード型の場合
SDBデータベース定義
: RECORD RECB 2 DBKEY_L2 XCHARACTER 1 TYPE K,L 2 DBKEY_L3 XCHARACTER 1 TYPE K,L 2 DBKEY_L4 CHARACTER 3 TYPE K,L 2 DBKEY INTEGER TYPE K,N 2 USERDB0 CHARACTER 20 TYPE U,D 2 USERDBN0 CHARACTER 10 TYPE U,D :
SDBデータベース格納定義
: STORAGE RECORD RECB CLUSTERED SET1 WITHIN FMBX02 SECONDARY INDEX RECB_SI1 USED FOR RECORD ORDER KEY ASCENDING USERDB0 WITHIN FMBX01 :
(p) PCTFREE
- PCTFREE ページ内の未使用領域の比率
-
PCTFREE句については,「11.7.2(3)(g) PCTFREE」を参照してください。
(q) WITHIN
- WITHIN {二次インデクス用RDエリア名
-
|(二次インデクス用RDエリア名)}
- 二次インデクス用RDエリア名
-
〜<RDエリア名>((1〜30バイト))
二次インデクスを格納するRDエリア名を指定します。
1つのSECONDARY INDEX句で,WITHIN句を必ず1つ指定してください。
《規則》
指定する二次インデクス用RDエリアに関する規則
-
格納レコード用RDエリア名として指定したRDエリアは指定できません。
-
二次インデクス用RDエリアには,create rdarea文のdata modelオペランドにstructuredを指定したRDエリアを指定してください。
-
二次インデクス用RDエリアとして指定するRDエリアには,1つのRDエリアにシーケンシャルインデクスと二次インデクスを合わせて,インデクスを最大500個指定できます。
-
二次インデクス用RDエリアに定義できるリソースの組み合わせについては,「表11-78 RDエリアに定義できるリソースの組み合わせ」を参照してください。
-
(r) SET
- SET 親子集合型名
-
〜<識別子>((1〜30バイト))
親レコード型,子レコード型の親子集合型名を指定します。
- 《規則》
-
SDBデータベース定義のSET句で指定した親子集合型名と同じ個数,同じ順番で指定してください。
(s) OWNER POINTER FOR
- OWNER POINTER FOR FIRST LAST MEMBER
-
親レコードに持たせるポインタを指定します。
- FIRST LAST
-
親レコードにFIRSTポインタ,およびLASTポインタを持たせる場合に指定します。
(t) MEMBER POINTER FOR
- MEMBER POINTER FOR {NEXT PRIOR│OWNER NEXT PRIOR} TENANT
-
子レコードに持たせるポインタを指定します。
- NEXT PRIOR
-
子レコードにNEXTポインタ,およびPRIORポインタを持たせる場合に指定します。
- OWNER NEXT PRIOR
-
子レコードにOWNERポインタ,NEXTポインタ,およびPRIORポインタを持たせる場合に指定します。
- 《規則》
-
-
親子集合の子レコードに対してSECONDARY INDEX句を指定した場合,OWNER NEXT PRIORを必ず指定してください。
-
親子集合の子レコードに対して位置指示子指定の検索を実行する場合,OWNER NEXT PRIORを必ず指定してください。
OWNER NEXT PRIORの指定規則の詳細については,「17.4.3 FIND文」の「(4) 共通規則」の「位置指示子指定の検索で,検索対象レコードがルートレコードではない場合」の説明を参照してください。
-