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

上へ第3章 データベースの定義変更と削除
上へ3.1 データベースの定義変更

3.1.2 格納構造定義の変更

■表のDSO定義の追(CREATE DSO)

表定義の追加後に、表のDSO定義を追加す場合には、CREATE DSO文を使用します。表のDSO定義の追加例を以下に示します。CREATE DSO文の指定方法の詳細については、“格納構造の定義”を参照してください。

製品表のDSOとして製品表DSOを追加します。
CREATE DSO  製品表DSO  FROM STOCKS.製品表
          ↑         ↑
       追加対象のDSO名     表名

     TYPE SEQUENTIAL(PAGESIZE(4),ORDER(0))
            ↑
          データ構造 

■表のDSO定義の削(DROP DSO)

実表から表のDSO定義を削除す場合には、DROP DSO文を使用します。なお、削除対象のDSOに対して、インデックスのDSOが定義されているとき、あるいは表のDSIが定義されている場合には、当該DSO定義を削除することはできません。あらかじめ、関連するインデックスのDSO定義、あるいは表のDSI定義を削除しておく必要があります。

ただし、CASCADEを指定した場合、削除するDSOに関連するDSIはすべて削除されます。

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

在庫管理DBに属するすべての表のDSOを削除します。
DROP DSO  在庫表DSO
         ↑
      削除対象のDSO名

DROP DSO  発注表DSO
         ↑
       削除対象のDSO名

■インデックスのDSO定義の追(CREATE DSO)

表のDSO定義が済んでいる実表にインデックスのDSO定義を追加す場合には、CREATE DSO文を使用します。インデックスのDSO定義の追加例を以下に示します。CREATE DSO文の指定方法の詳細については、“格納構造の定義”を参照してください。

在庫表の倉庫番号の上に、インデックスのDSOとして在庫番号IXDSOを追加します。
CREATE DSO  在庫番号IXDSO INDEX ON  STOCKS.在庫表倉庫番号)
           ↑            ↑      ↑
      追加対象のインデックスの    スキーマで   列名
      DSO名              修飾された表名

      TYPE BTREE (PAGESIZE1(16), PAGESIZE2(1)) 

■インデックスのDSO定義の削(DROP DSO)

実表からインデックスのDSO定義を削除す場合には、DROP DSO文を使用します。

インデックスのDSIが定義されている場合には、当該インデックスのDSO定義を削除することはできません。前もって、関連するインデックスのDSIを削除しておく必要があります。

ただし、CASCADEを指定した場合、削除するDSOが実表の場合に、それに関連するインデックスのDSOおよびそれに関連するDSIはすべて削除されます。

インデックスのDSO定義の削除例を以下に示します。

在庫管理DBに属するすべてのインデックスのDSOを削除します。
DROP DSO  製品名IXDSO
         ↑
     削除対象のインデックスのDSO名

DROP DSO  在庫番号IXDSO
         ↑
     削除対象のインデックスのDSO名

■表のDSI定義の追(CREATE DSI)

DSO定義済みの実表にDSI定義を追加す場合には、CREATE DSI文を使用します。CREATE DSI文の各項目の指定方法は、格納構造定義時の指定と同じです。

また、運用中のデータベースに対して表のDSI定義の追加が必要な場合は、応用プログラムを停止せずに表のDSI定義を追加することができます。

応用プログラム実行中に表のDSI定義を追加する場合は、rdbddlexコマンドの準備モード(-lオプション)で定義します。rdbddlexコマンドの詳細については、“RDBコマンドリファレンス”を参照してください。

表のDSI定義の追加例を以下に示します。CREATE DSI文の指定方法の詳細については、“格納構造の定義”を参照してください。

在庫管理DBに東海発注表DSIを追加します。この東海発注表DSIは、発注表DSOの配下に属し、かつデータベーススペースDBSP_3上に定義されるものとします。
CREATE DSI 東海発注表DSI DSO 発注表DSO  USING (80, 89)
         ↑          ↑         ↑
      追加対象のDSI名      DSO名      分割キー値

      ALLOCATE  DATA  ON  DBSP_3  SIZE  2000M ← スペース割付け
                  ↑     ↑
               データベース  割付け量
               スペース名

■表のDSI定義の削(DROP DSI)

実表からDSI定義を削除す場合には、DROP DSI文を使用します。対象のDSIが表のDSIであり、それに関係するインデックスのDSIが存在する場合、当該DSI定義を削除することはできません。あらかじめ、関連するインデックスのDSIのDSI定義を削除しておく必要があります。

ただし、CASCADEを指定した場合、削除するDSIによる格納対象が表の場合に、それに関連するインデックスのDSIはすべて削除されます。

DSI定義の削除例を以下に示します。

在庫管理DBに属するすべてのDSIを削除します。
DROP DSI  製品名IXDSI
         ↑
      削除対象のDSI名

DROP DSI  在庫表DSI
         ↑
      削除対象のDSI名

DROP DSI  関西発注表DSI
         ↑
      削除対象のDSI名

DROP DSI  関東発注表DSI
         ↑
      削除対象のDSI名

■インデックスのDSI定義の追(CREATE DSI)

インデックスのDSIを追加する場合には、CREATE DSI文を使用します。

rdbddlexコマンドの準備モード(-lオプション)で追加した表のDSIに関連するインデックスのDSIを定義する場合は、rdbddlexコマンドの準備モード(-lオプション)で定義します。rdbddlexコマンドの詳細については、“RDBコマンドリファレンス”を参照してください。

CREATE DSI 在庫番号IXDSI INDEX DSO 在庫番号IXDSO 
         ↑               ↑
     インデックスのDSI名      インデックスのDSO名

   BASE 在庫表DSI
         ↑
       表のDSI名

    ALLOCATE INDEX ON DBSP_4 SIZE 1M,   ← スペース割付け
         BASE  ON DBSP_4 SIZE 100M   ← スペース割付け

■DSI定義の分割キー値の変(ALTER DSI)

表のDSI定義の分割キー値を変更する場合には、ALTER DSI文を使用します。表の格納構造がSEQUENTIAL構およびRANDOM構の場合に分割キー値を変更することができます。以下に分割キー値の変例を示します。

◆DSIを統合す

兵庫データを大阪データに統合したい場合の例を以下に示します。

[変更前]

CREATE DSO DSO01 FROM SCH01.TABLE01
      TYPE SEQUENTIAL(PAGESIZE(4),ORDER(0))
      WHERE(所在) = (?)

CREATE DSI 東京DSI DSO DSO01
            USING(N'東京') ALLOCATE DATA  ON …
CREATE DSI 大阪DSI DSO  DSO01
            USING(N'大阪')  ALLOCATE DATA  ON …
CREATE DSI 兵庫DSI DSO DSO01
            USING(N'兵庫')  ALLOCATE DATA  ON …
     :

[DSI変更の例]

DROP  DSI 兵庫DSI

ALTER DSI 大阪DSI ALTER   USING(N'大阪'), (N'兵庫')
                        ↑
                     変更する分割値

image

(1) 大阪データと兵庫データをファイルに出力します。- rdbunlコマンド

(2) 兵庫データのDSIを削除します。------------------ rdbddlexコマンド

(3) ALTER DSIにより分割値の変更を行います。-------- rdbddlexコマンド

(4) (1)のデータを同時にロードします。-------------- rdbsloaderコマンド

◆DSIの格納範囲を変更す

保存期間を3年としている売上データについて、保存対象となる年を変更する例を以下に示します。

[変更前]

CREATE DSO 売上表DSO  FROM   STOCKS.売上表
      TYPE SEQUENTIAL(PAGESIZE(4),ORDER(0))
      WHERE(年度, 月) = (?, ?)

CREATE DSI 1月DSI DSO 売上表DSO
           USING (1999, 1),(2000, 1),(2001, 1) …
CREATE DSI 2月DSI DSO 売上表DSO
           USING (1999, 2),(2000, 2),(2001, 2) …
CREATE DSI 3月DSI DSO 売上表DSO
           USING (1999, 3),(2000, 3),(2001, 3) …
    :

[DSI変更の指定例]

ALTER DSI 1月DSI ALTER USING(2000, 1),(2001, 1),(2002, 1)
ALTER DSI 2月DSI ALTER USING(2000, 2),(2001, 2),(2002, 2)
ALTER DSI 3月DSI ALTER USING(2000, 3),(2001, 3),(2002, 3)
                        ↑
        :            変更する分割値

image

■スコープ定義の追(CREATE SCOPE)

スコープ定義を追加する場合は、CREATE SCOPE文を使用します。スコープ定義を追加する例を、以下に示します。CREATE SCOPE文の指定方法の詳細については、“スコープ定義”を参照してください。

スコープ“大阪スコープ”の追加の例
CREATE SCOPE  大阪スコープ
           ↑
         スコープ名

    DSI (大阪在庫表DSI,大阪発注表DSI)
              ↑
            DSI名リスト

■スコープ定義の適(APPLY SCOPE)

追加したスコープ定義を適用する場合は、APPLY SCOPE文を使用します。スコープ定義を適用する例を、以下に示します。APPLY SCOPE文の指定方法の詳細については、“スコープ定義の適用”を参照してください。

利用者“SUZUKI”にスコープ“大阪スコープ”を適用します。
APPLY SCOPE  大阪スコープ   TO   SUZUKI
          ↑           ↑
        スコープ名       認可識別子

■スコープ定義の解(RELEASE SCOPE)

スコープ定義の解除は、RELEASE SCOPE文を使用します。APPLY SCOPE文により、利用者に適用されているスコープ定義を解除します。

RELEASE SCOPE文とAPPLY SCOPE文の実行者は、同じでなければなりません。

RELEASE SCOPE文の例を、以下に示します。

利用者“SUZUKI”に適用しているスコープ“大阪スコープ”を解除します。
RELEASE SCOPE  大阪スコープ   FROM   SUZUKI
           ↑           ↑
         スコープ名       認可識別子

■スコープ定義の削(DROP SCOPE)

スコープ定義の削除は、DROP SCOPE文を使用します。APPLY SCOPE文により、利用者に適用されているスコープ定義も削除します。

DROP SCOPE文とCREATE SCOPE文は、同じ実行者でなければなりません。

DROP SCOPE文の例を、以下に示します。

スコープ“東京スコープ”の定義を削除します。
DROP SCOPE 東京スコープ
        ↑
      スコープ名

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

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