ページの先頭行へ戻る
Symfoware Server V12.1.x RDB運用ガイド(データベース定義編)
FUJITSU Software

2.2.1 rdbddlexコマンドで定義する方法

ここでは、rdbddlexコマンドを使用して、定義ファイルからデータベースを定義する方法を示します。

rdbddlexコマンドでは、物理構造、論理構造および格納構造を定義することができます。手順としては、最初に、データベースの定義を記述したファイルを作成し、そのファイルを入力ファイルとして指定してrdbddlexコマンドを実行します。

なお、定義ファイルのパス名およびファイル名は、任意の名前で指定可能です。

参照

指定可能なファイル名長は“コマンドリファレンス”を参照してください。

rdbddlexコマンドの定義ファイルの記述形式

rdbddlexコマンドの定義ファイルを記述する文法の一般形式を以下に示します。

形式1

1つのSQL文の終わりには終了子“;”を指定することが必要です。

CREATE DATABASE  RDBDB    ;
↑ 終了子の指定
形式2(プロシジャルーチン定義を行う場合の記述形式)

プロシジャルーチン定義を行う場合は、定義ファイルの先頭に“EXEC SQL”を指定し、最後に“END-EXEC;”を指定します。“EXEC SQL”から“END-EXEC;”までが1つのSQL文とみなされます。この形式は、rdbddlexコマンドにxオプションを指定した場合のみ有効です。

EXEC SQL
  CREATE PROCEDURE PROC01
     :
END-EXEC;

SolarisSolarisの場合

定義ファイルからデータベースを作成する例を以下に示します。

rdbddlex    -d    RDBDB           /home/rdb/DDL/ddl.dat
                ↑                         ↑
        データベース名指定           定義ファイル指定

また、定義ファイルの例を以下に示します。

/home/rdb/DDL/ddl.dat

--  データベース定義  データベース名は“RDBDB”
CREATE DATABASE RDBDB;
--  データベーススペース定義  データベーススペース名は“DBSPACE1”
CREATE DBSPACE DBSPACE1 ALLOCATE RAWDEVICE /dev/rdsk/c0t1d0s1;
--  スキーマを定義  スキーマ名は“STOCKS”
CREATE SCHEMA STOCKS
    --  在庫製品の管理表を定義
    CREATE TABLE  在庫表  ( 製品番号       SMALLINT NOT NULL,
                            製品名         NATIONAL CHARACTER(10) NOT NULL,
                            在庫数量       INTEGER,
                            倉庫番号       SMALLINT,
                            PRIMARY KEY   (製品番号)
                          )
    CREATE VIEW   大量在庫表(品番,数量)
                      AS SELECT   製品番号, 在庫数量  FROM STOCKS.在庫表
                      WHERE 在庫数量 >= 50
    --  発注製品の管理表を定義
    CREATE TABLE  発注表  ( 取引先         SMALLINT NOT NULL,
                            取引製品       SMALLINT NOT NULL,
                            仕入価格       INTEGER,
                            発注数量       SMALLINT,
                            PRIMARY KEY   (取引先,取引製品)
                          )
    CREATE VIEW   大量発注表(取引製品, 仕入価格)
                      AS SELECT 取引製品, 仕入価格  FROM STOCKS.発注表
                      WHERE   発注数量 >= 100
    --  取引会社の管理表を定義
    CREATE TABLE  会社表  ( 会社番号       SMALLINT NOT NULL,
                            会社名         NATIONAL CHARACTER(10) NOT NULL,
                            電話番号       CHARACTER(14),
                            住所           NATIONAL CHARACTER(20),
                            PRIMARY KEY   (会社番号)
                          )
    CREATE VIEW   会社表1 AS SELECT  会社番号,会社名  FROM STOCKS.会社表;

--  在庫表の格納構造定義
CREATE DSO 在庫表DSO                                 --  在庫表のDSO
           FROM STOCKS.在庫表
           TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1));
CREATE DSI 在庫表DSI                                 --  在庫表のDSI
           DSO  在庫表DSO
           ALLOCATE DATA ON DBSPACE1 SIZE 280K;
--  在庫表の製品番号にインデックスを作成  
CREATE DSO 製品番号IXDSO                             --  インデックスのDSO
           INDEX ON STOCKS.在庫表 (製品番号)
           TYPE     BTREE ( PAGESIZE1(16),PAGESIZE2(1), REALIGNMENT) BY ADDRESS;
CREATE DSI 製品番号IXDSI                             --  インデックスのDSI
           INDEX
           DSO      製品番号IXDSO
           ALLOCATE BASE      ON DBSPACE1 SIZE 200K,
                    INDEX     ON DBSPACE1 SIZE  40K;
--  発注表の格納構造定義
CREATE DSO 発注表DSO                                 --  発注表のDSO
           FROM STOCKS.発注表
           TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1))
           WHERE  (取引先) BETWEEN (?) AND (?);         --  取引先の番号別に
                                                        --  データ分割配置
CREATE DSI 関東発注表DSI                             --  関東に所在の会社用の
           DSO      発注表DSO                        --  発注表のDSI
           USING   (60,69)                              --  60番台は関東所在の会社

           ALLOCATE DATA ON DBSPACE1 SIZE 280K;
CREATE DSI 関西発注表DSI                             --  関西に所在の会社用の
           DSO      発注表DSO                        --  発注表のDSI
           USING   (70,79)                              --  70番台は関西所在の会社

           ALLOCATE DATA ON DBSPACE1 SIZE 280K;
--  発注表の取引先および取引製品にインデックスを作成  
CREATE DSO 取引IXDSO                               --  インデックスのDSO
           INDEX ON STOCKS.発注表 (取引先,取引製品)
           TYPE     BTREE ( PAGESIZE1(16),PAGESIZE2(1), REALIGNMENT) BY ADDRESS;
CREATE DSI 関東取引IXDSI                           --  インデックスのDSI
            INDEX
            DSO      取引IXDSO
            BASE     関東発注表DSI
            ALLOCATE BASE      ON DBSPACE1 SIZE 200K,
                     INDEX     ON DBSPACE1 SIZE  40K;
 CREATE DSI 関西取引IXDSI                          --  インデックスのDSI
            INDEX  
            DSO      取引IXDSO  
            BASE     関西発注表DSI
            ALLOCATE BASE      ON DBSPACE1 SIZE 200K,
                     INDEX     ON DBSPACE1 SIZE  40K;
--  会社表の格納構造定義
CREATE DSO 会社表DSO                                 --  会社表のDSO
           FROM STOCKS.会社表  
           TYPE SEQUENTIAL(PAGESIZE(4),ORDER(1));  
CREATE DSI 会社表DSI                                 --  会社表のDSI
           DSO  会社表DSO
           ALLOCATE DATA ON DBSPACE1 SIZE 280K;
--  会社表の会社番号にインデックスを作成
CREATE DSO 会社番号IXDSO                           --  インデックスのDSO
           INDEX ON STOCKS.会社表 (会社番号)
           TYPE     BTREE ( PAGESIZE1(16),PAGESIZE2(1), REALIGNMENT) BY ADDRESS;
CREATE DSI 会社番号IXDSI                           --  インデックスのDSI
           INDEX
           DSO      会社番号IXDSO
           ALLOCATE BASE      ON DBSPACE1 SIZE 200K,
                    INDEX     ON DBSPACE1 SIZE  40K;

以下の記述は注釈とみなします。

  • “--”(連続した2 個のハイフン)以降に記載された記述
    “--”以降その行の右終端までを注釈とみなします。

Solaris以外の場合は、rdbddlexコマンドの定義ファイル指定および定義ファイル中のデータベーススペース定義を、それぞれ以下のように変更してください。

LinuxLinuxの場合

  • 定義ファイル指定:/home/rdb/DDL/ddl.dat

  • データベーススペース定義:CREATE DBSPACE DBSPACE1 ALLOCATE RAWDEVICE /dev_symfoware/raw1

WindowsWindowsの場合

  • 定義ファイル指定:C:\USERS\DEFAULT\DDL.DAT

  • データベーススペース定義:CREATE DBSPACE DBSPACE1 ALLOCATE FILE C:\SFWD\RDB\USR\DBSP\DATABASE_SPACE ATTRIBUTE SPACE(3M)

参考

rdbddlexコマンドのdオプションによるデータベース名の指定は、データベースを定義する場合、定義ファイルの最初のSQL文がCREATE DATABASE文のときのみ省略することができます。