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

上へ第2章 データベースの作成
上へ2.3 データベースの作成方法

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

ここでは、定義ファイルからデータベースを作成する方法を示します。

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

なお、rdbddlexコマンドのdオプションは、定義ファイルの最初のSQL文がCREATE DATABASE文のときのみ省略することができます。

■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; 

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

これらの例では、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;

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

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