ここでは、rdbddlexコマンドを使用して、定義ファイルからデータベースを定義する方法を示します。
rdbddlexコマンドでは、物理構造、論理構造および格納構造を定義することができます。手順としては、最初に、データベースの定義を記述したファイルを作成し、そのファイルを入力ファイルとして指定してrdbddlexコマンドを実行します。
なお、定義ファイルのパス名およびファイル名は、任意の名前で指定可能です。
参照
指定可能なファイル名長は“コマンドリファレンス”を参照してください。
rdbddlexコマンドの定義ファイルの記述形式
rdbddlexコマンドの定義ファイルを記述する文法の一般形式を以下に示します。
1つのSQL文の終わりには終了子“;”を指定することが必要です。
CREATE DATABASE RDBDB ;
↑ 終了子の指定
プロシジャルーチン定義を行う場合は、定義ファイルの先頭に“EXEC SQL”を指定し、最後に“END-EXEC;”を指定します。“EXEC SQL”から“END-EXEC;”までが1つのSQL文とみなされます。この形式は、rdbddlexコマンドにxオプションを指定した場合のみ有効です。
EXEC SQL CREATE PROCEDURE PROC01 : END-EXEC;
Solarisの場合
定義ファイルからデータベースを作成する例を以下に示します。
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コマンドの定義ファイル指定および定義ファイル中のデータベーススペース定義を、それぞれ以下のように変更してください。
Linuxの場合
定義ファイル指定:/home/rdb/DDL/ddl.dat
データベーススペース定義:CREATE DBSPACE DBSPACE1 ALLOCATE RAWDEVICE /dev_symfoware/raw1
Windowsの場合
定義ファイル指定: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文のときのみ省略することができます。