Symfoware(R) Server RDBユーザーズガイド データベース定義編 - FUJITSU - |
目次 索引 |
ここでは、定義ファイルからデータベースを作成する方法を示します。
rdbddlexコマンドでは、物理構造、論理構造および格納構造を定義することができます。手順としては、最初に、rdbddlexコマンドで使用する入力ファイルを作成します。そのあとで、rdbddlexコマンドを実行します。
なお、rdbddlexコマンドのdオプションは、定義ファイルの最初のSQL文がCREATE DATABASE文のときのみ省略することができます。
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 OEの場合を示します。その他のシステムの場合は、rdbddlexコマンドの入力ファイル指定および入力ファイル中のデータベーススペース定義を、それぞれ以下のように変更してください。
注釈は、連続した2個のハイフン“--”で記述することができます。“--”以降その行の右終端までを注釈とみなします。
rdbddlex -d RDBDB /home/rdb/DDL/ddl.dat ↑ ↑ データベース名指定 入力ファイル指定 |
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(4),PAGESIZE2(4)) 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(4),PAGESIZE2(4)) 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(4),PAGESIZE2(4)) BY ADDRESS; CREATE DSI 会社番号IXDSI -- インデックスのDSI INDEX DSO 会社番号IXDSO ALLOCATE BASE ON DBSPACE1 SIZE 200K, INDEX ON DBSPACE1 SIZE 40K; |
目次 索引 |