ページの先頭行へ戻る
Symfoware Server V10.0.0/V10.0.1 RDB運用ガイド(データベース定義編)

2.8.1 表定義

表定義では、格納領域指定に、表のデータを格納するデータベーススペースを指定します。格納領域指定を指定すると、表のDSO定義および表のDSI定義が自動的に行われます。また、DSIの初期化も自動的に行われます。

格納領域指定

格納領域指定は、実表のデータを格納するデータベーススペースを指定します。格納領域指定を指定した場合、表名およびスキーマ名は、8文字以内の先頭が英字で始まる英数字、または8文字以内の日本語文字列であることが必要です。ただし、システム用の動作環境ファイルでDEFAULT_DSI_NAME=CODEを指定した場合は、表名およびスキーマ名に、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定できます。

在庫管理データベースの実表を格納構造もあわせて定義する例を以下に示します。スキーマSTOCKSに属する在庫表を定義するものとします。

在庫表を定義するCREATE TABLE文(格納領域指定あり)

CREATE TABLE  STOCKS.在庫表  ( 製品番号 SMALLINT  NOT NULL,
                               製品名   NATIONAL CHARACTER(10) NOT NULL,
                               在庫数量 INTEGER, 
                               倉庫番号 SMALLINT,
                               PRIMARY KEY(製品番号))

                               COMMENT '在庫品とその数量, 格納倉庫の表'
                               ON DBSPACE1
                                   ↑
                               格納領域指定

なお、上記の指定は、以下の定義をしたことと同じ意味です。

CREATE TABLE  STOCKS.在庫表  ( 製品番号 SMALLINT  NOT NULL,
                               製品名   NATIONAL CHARACTER(10) NOT NULL,
                               在庫数量 INTEGER, 
                               倉庫番号 SMALLINT,
                               PRIMARY KEY(製品番号))
                               COMMENT '在庫品とその数量, 格納倉庫の表';

CREATE DSO #STOCKS@在庫表   FROM STOCKS.在庫表
       TYPE SEQUENTIAL(PAGESIZE(32),ORDER(1));

CREATE DSI #STOCKS@在庫表   DSO  #STOCKS@在庫表
       ALLOCATE DATA ON DBSPACE1 SIZE 30720K;

表のDSO名およびDSI

表のDSO名および表のDSI名は、表定義時のスキーマ名と表名を組み合わせて命名します。DSO名とDSI名は同じ名前になります。

“ # スキーマ名 {#|@} 表名 ”
  (1)    (2)        (3)   (4)

(1) 固定プレフィックス
(2) CREATE TABLE文で指定したスキーマ名
(3) #: 表名が文字列の場合
    @: 表名が各国語文字列の場合
(4) CREATE TABLE文で指定した表名

ただし、スキーマ名、表名のいずれか、または両方が各国語文字列の場合には、DSO名およびDSI名は、全体が各国語文字列となります。

システム用の動作環境ファイルでDEFAULT_DSI_NAME=CODEを指定した場合、表のDSO名およびDSI名は、システムで採番する10桁の数字を使用して命名します。

以下に例を示します。

1

スキーマ名および表名が文字列の場合

CREATE TABLE STOCKS.ORDERS( …… ) ON DBSPACE1

→  DSO名 : #STOCKS#ORDERS
    DSI名 : #STOCKS#ORDERS
2

スキーマ名は文字列、表名が各国語文字列の場合

CREATE TABLE STOCKS.在庫表( …… ) ON DBSPACE1

→  DSO名 : #STOCKS@在庫表
    DSI名 : #STOCKS@在庫表
3

システム用の動作環境ファイルでDEFAULT_DSI_NAME=CODEを指定した場合

CREATE TABLE STOCKSMASTER.ORDERSMASTER( …… ) ON DBSPACE1

→  DSO名 : #0000000155
    DSI名 : #0000000155

表の格納構造

表の格納構造は以下のようになります。これらは、Symfoware/RDBが自動的に定義します。

格納構造:

SEQUENTIAL構造

データ部のページ長:

32K

データ部の割付け量:

30720K
割付け対象のデータベーススペースに、割付け量分の連続領域が存在しない場合、複数の領域に分割して割付けることがあります。複数の領域に分割されたかどうかは、rdbprtコマンドの出力結果で確認できます。DSI情報のAllocation informationのAllocate sizeに、指定した割付け量以下の値が表示された場合、複数の領域に分割して割付けられたと判断できます。

参照

  • rdbprtコマンドの詳細については、“コマンドリファレンス”を参照してください。

  • 格納構造の詳細については、“2.7 格納構造の定義”を参照してください。

ORDER(n)の指定:

ORDER(1)

PRECEDENCE(n)の指定:

なし