IBM Books

管理およびプログラミングの手引き

XML 列の使用可能化

XML 文書を DB2 データベースに保管するには、 1 つの列を XML に関して使用可能にする必要があります。 列を使用可能して索引付けできるようにすると、すばやく検索することができます。 列を使用可能にするには、XML エクステンダー管理ウィザードまたは DB2 コマンド・シェルを使用します。 列のタイプは XML でなければなりません。

XML エクステンダーが XML 列を使用可能にすると、XML エクステンダーは以下の操作を行います。

XML 列が使用可能になったら、以下のことを行うことができます。

作業を始める前に

XML UDT の列を含む DB2 表を作成または更新することによって、XML 表を作成します。

管理ウィザードの使用

XML 列を使用可能にするには、以下のステップに従います。

  1. 管理ウィザードをセットアップして開始します。 詳しくは 管理ウィザードの開始を参照してください。
  2. 「ランチパッド (LaunchPad)」ウィンドウから 「XML 列を処理する (Work with XML Columns)」をクリックし、 XML エクステンダーの列関連タスクを表示します。 「タスクの選択 (Select a Task)」ウィンドウが開きます。
  3. データベース内の既存の表列を使用可能にするために、 「列を使用可能にする (Enable a Column)」をクリックしてから、 「次へ (Next)」をクリックします。
  4. 「表名 (Table name)」フィールドから、 XML 列を含む表を選択します。 たとえば次のようにします。

    SALES_TAB
    
  5. 「列名 (Column name)」フィールドから、 使用可能にする列を選択します。 たとえば次のようにします。

    ORDER
    
    列のタイプは XML でなければなりません。
  6. DAD パスおよびファイル名を 「DAD ファイル名 (DAD file name)」フィールドに入力するか、 または「...」をクリックして既存の DAD ファイルをブラウズします。 たとえば次のようにします。

    c:\dxx\samples\dad\getstart.dad
    
  7. 任意選択で、既存の表の名前を 「表スペース (Table space)」フィールドに入力します。

    表スペースには XML エクステンダーの作成したサイド表が含まれます。 表スペースが指定されている場合、 サイド表は指定された表スペースの中に作成されます。 表スペースが指定されていない場合、サイド表はデフォルト表スペースの中に作成されます。

  8. 任意選択で、デフォルト視点の名前を 「デフォルト視点 (Default view)」フィールドに入力します。

    指定される場合、デフォルト視点は、列が使用可能になるときに自動的に作成され、 XML 表と関連するすべてのサイド表を結合します。

  9. 任意選択で、アプリケーション表内の基本キーの列名を 「ルート ID (Root ID)」フィールドに入力します。 これを入力することを推奨します。

    XML エクステンダーはすべてのサイド表をアプリケーション表に関連付けるために、 一意的な識別子としてルート ID の値を使用します。 これが指定されていない場合、 XML エクステンダーは DXXROOT_ID 列をアプリケーション表に追加して識別子を生成します。

  10. 「終了 (Finish)」をクリックして、 XML 列を使用可能にし、サイド表を作成し、「ランチパッド (LaunchPad)」ウィンドウに戻ります。

DB2 コマンド・シェルから

XML 列を使用可能にするには、以下のようなコマンドを入力します。

構文:
dxxadm enable_column
>>-dxxadm---enable_column---dbName---tbName---colName----------->
 
>----DAD_file----+-----------------+---+-------------------+---->
                 '--t--tablespace--'   '--v--default_view--'
 
>-----+--------------+-----------------------------------------><
      '--r--root_id--'
 

パラメーター:

dbName
データベースの名前。

tbName
使用可能にする列を含む表の名前。

colName
使用可能にする XML 列の名前。

DAD_file
文書アクセス定義 (DAD) が入っているファイルの名前。

tablespace
XML エクステンダーの作成したサイド表が含まれている、作成済みの表スペース。 これを指定しない場合、デフォルトの表スペースが使用されます。

default_view
任意指定。 関連するすべてのサイド表をアプリケーション表に結合するために XML エクステンダーが作成した、 デフォルト視点の名前。

root_id
任意指定。 アプリケーション表内の基本キーの列名、 およびすべてのサイド表をアプリケーション表に関連付ける一意的な識別子。 XML エクステンダーはすべてのサイド表をアプリケーション表に関連付けるために、 一意的な識別子として root_id 値を使用します。 ルート ID を指定することを推奨します。 ルート ID が指定されていない場合、 XML エクステンダーは DXXROOT_ID 列をアプリケーション表に追加して識別子を生成します。

制限: アプリケーション表の列名の 1 つが DXXROOT_ID で、 この列に root_id の値が入っていない場合は、 ユーザーが root_id パラメーターを指定しなければなりません。 こうしないとエラーが発生します。

例: 以下の例では、 DB2 コマンド・シェルを使用して列を使用可能にします。 この DAD ファイルおよび XML 文書は、付録 B, サンプルに出ています。

dxxadm enable_column SALES_DB sales_tab order getstart.dad
            -v sales_order_view -r invoice_num

この例では、列 ORDER が表 SALES_DB.SALES_TAB 内で使用可能になります。 DAD ファイルは getstart.dad、 デフォルト視点は sales_order_view、ルート ID は INVOICE_NUM です。

この例を使用すると、表 SALES_TAB のスキーマは次のとおりです。


列名 INVOICE_NUM SALES_PERSON ORDER
データ・タイプ CHAR(6) VARCHAR(20) XMLVARCHAR

DAD 指定に基づいて、以下のサイド表が作成されます。

ORDER_SIDE_TAB:


列名 ORDER_KEY CUSTOMER INVOICE_NUM
データ・タイプ INTEGER VARCHAR(50) CHAR(6)
パス式 /Order/@key /Order/Customer/Name N/A

PART_SIDE_TAB:
列名 PART_KEY PRICE INVOICE_NUM
データ・タイプ INTEGER DOUBLE CHAR(6)
パス式 /Order/Part/@key /Order/Part/ExtendedPrice N/A

SHIP_SIDE_TAB:


列名 DATE INVOICE_NUM
データ・タイプ DATE CHAR(6)
パス式 /Order/Part/Shipment/ShipDate N/A

すべてのサイド表には同じタイプの列 INVOICE_NUM があります。 これは、アプリケーション表の基本キー INVOICE_NUM によってルート ID が指定されているためです。 列が使用可能になった後、INVOICE_NUM の値がサイド表に挿入されます。 XML 列 ORDER を使用可能にする際に default_view パラメーターを指定したため、 デフォルト視点 sales_order_view が作成されます。 この視点は、以下のステートメントを使って上記の表をすべて結合します。

CREATE VIEW sales_order_view(invoice_num, sales_person, order,
                                  order_key, customer, part_key, price, date)
     AS
     SELECT sales_tab.invoice_num, sales_tab.sales_person, sales_tab.order,
            order_tab.order_key, order_tab.customer,
            part_tab.part_key, part_tab.price,
            ship_tab.date
     FROM sales_tab, order_tab, part_tab, ship_tab
     WHERE sales_tab.invoice_num = order_tab.invoice_num
                AND sales_tab.invoice_num = part_tab.invoice_num
                AND sales_tab.invoice_num = ship_tab.invoice_num

enable_column コマンドによって表スペースが指定されている場合、 サイド表は指定された表スペースの中に作成されます。 表スペースが指定されていない場合、 サイド表はデフォルト表スペースの中に作成されます。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]