Symfoware(R) 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および列名リストに指定可能な列のデータ型のとおりです。

[表: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))
      WHERE (取引先) = (?)

例3

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

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

All Rights Reserved, Copyright (C) 富士通株式会社 2003