Symfoware Server RDB運用ガイド(データベース定義編) - FUJITSU -
目次 索引 前ページ次ページ

第2章 データベースの作成> 2.7 格納構造の定義

2.7.1 表のDSO定義

表のDSOの定義は、CREATE DSOを使用して行います。

以下に表のDSO定の例を示します。

表のDSO定義

■DSO

DSO名には、36文字以内の先頭が英字で始まる英数字、または18文字以内の日本語文字列を指定します。DSO名は、データベース内で一意です。

■表

格納構造定義に対応する実表の名前を指定します。表名は、スキーマ名で修飾されている必要があります。

■データ構

表のデータ格納時のデータ構造について指定します。DSO定義で表の格納構造を定義する場合には、SEQUENTIALまたはRANDOMが指定可能です。

◆SEQUENTIAL

SEQUENTIALを指定した場合、追加されるデータは追加順に格納されます。

PAGESIZEは、ページ長を指定します。ORDER(0)は、削除領域を再使用しないことを指定し、また、ORDER(1)は、削除領域を再使用することを指定します。詳細については、“SEQUENTIAL構造”を参照してください。

◆RANDOM

RANDOMを指定した場合、追加されるデータは無作為な順で格納されます。

RANDOMは、データの格納位置を決定するためのキーを、CLUSTERにより指定します。CLUSTERを省略すると、表定義における主キ(PRIMARY KEY)と同じ列の並びとなります。

PAGESIZE1、PAGESIZE2は、データ構造の要素(RANDOM構造の場合のPRIMEとOVERFLOW)のページ長を指定します。

RANDOM構造の場合は、RULEを指定してデータの格納位置を決定することができます。詳細については、“RANDOM構造”を参照してください。

■分割条

表の分割運を適用する場合に、分割の条件を指定します。実際の分割単位はDSI定義文で指定します。ここでは、分割のための条件だけを指定します。

各分割単位に格納される行は、列名リストに指定された各列に設定する値と、仮値リストの“?”にDSI定義文で指定された値を代入した結果により決定されます。

DSO定義文で分割条件を指定する場合、データ構造がRANDOMのときは、分割条件で指定する列名リストは、CLUSTERで指定した列名リストに含まれた列であることが必要です。

列名リストに指定可能な列の数は、最大で64個です。列名リスと仮値リスの“?”の数は、同じでなければなりません。

CLUSTERおよび列名リストに指定可能な列のデータは、以下のとおりです。

[表:CLUSTERおよび列名リストに指定可能な列のデータ]

属性

精度

位取り

長さ

備 考

SMALLINT

 

INTEGER

 

NUMERIC

1〜18

0〜精度

 

DECIMAL

1〜18

0〜精度

 

CHARACTER

1〜1000(注1)

VARYINGは指定不可

NATIONAL CHARACTER

1〜500 (注2)

VARYINGは指定不可

DATE

 

TIME

 

TIMESTAMP

 

INTERVAL

 

注1) 分割条件に指定する場合は、1〜254で指定します。

注2) 分割条件に指定する場合は、1〜127で指定します。

CLUSTERおよび列名リストに指定する列には、NOT NULLが指定されている必要があります。なお、分割条件で指定された列名リストを分割キと呼びます。

以下に、発注表の取引先と取引製品を1組の分割キーとした発注表のDSO定義の例を示します。

例1

列名リスト中の列名の個数と仮値リストの“?”の個数の関係
分割条件 : WHERE (取引先) =   ( ? )
                    ↑          ↑
                列名 = 1     仮値 = 1

分割条件 : WHERE (取引先) BETWEEN   ( ? )   AND   ( ? )
                    ↑                ↑            ↑
                 列名 = 1          仮値 = 1      仮値 = 1

分割条件 : WHERE (製品名, 倉庫番号) =   (?,?)
                         ↑               ↑
                      列名 = 2         仮値 = 2

分割条件 : WHERE (年度, 月) BETWEEN   (?,?)   AND   (?,?)
                      ↑                ↑            ↑
                    列名 = 2        仮値 = 2      仮値 = 2
         :
列名リスト中の列数と仮値の“?”の数は同数である。

例2

取引先名の名前で分割した例
CREATE DSO  発注表DSO2 FROM STOCKS.発注表
            TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1))
            WHERE  (取引先) = (?)

例3

パーティション分割するキー値を、範囲で区切って分割する例
CREATE DSO  発注表DSO FROM STOCKS.発注表
            TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1))
            WHERE  (取引先) BETWEEN (?) AND (?)

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2007-2008